TS.DECRBY
TS.DECRBY key subtrahend [TIMESTAMP timestamp] [RETENTION retentionPeriod] [ENCODING <COMPRESSED|UNCOMPRESSED>] [CHUNK_SIZE size] [DUPLICATE_POLICY policy] [IGNORE ignoreMaxTimediff ignoreMaxValDiff] [LABELS [label value ...]]
- 可用:
- Redis 堆栈 / TimeSeries 1.0.0
- 时间复杂度:
- 当 M 是压缩规则的数量时,当 O(M) 或没有压缩时为 O(1)
减小具有最大现有时间戳的样本值,或创建一个新样本,其值等于具有最大现有时间戳和给定递减的样本值
必需参数
key
是时间序列的键名称。
subtrahend
是 subtrahend (double) 的数值。
- 当指定的 key 不存在时,将创建新的时间序列。
- 您可以将此命令用作自动将历史记录作为时间序列获取的计数器或仪表。
- 如果处理重复样本的策略 (
IGNORE
) -TS.DECRBY
作也会受到影响(可以过滤样品添加/修改)。 - 将样本显式添加到压缩的时间序列中(使用
TS.ADD
,TS.MADD
,TS.INCRBY
或TS.DECRBY
) 可能会导致原始数据与压缩数据不一致。压缩过程可能会覆盖此类样本。
可选参数
TIMESTAMP timestamp
是 Unix 时间(整数,以毫秒为单位),指定采样时间戳,或将采样时间戳设置为服务器时钟的 Unix 时间。*
Unix 时间是自 1970 年 1 月 1 日 00:00:00 UTC(Unix 纪元)以来经过的毫秒数,未因闰秒而进行调整。
timestamp
必须等于或大于最大现有时间戳。如果相等,则具有最大现有时间戳的样本的值将减小。如果该值较高,则 timestamp 设置为timestamp
,并将其值设置为最大现有时间戳减去subtrahend
.
如果时间序列为空,则值设置为subtrahend
.
如果未指定,则时间戳将设置为服务器时钟的 Unix 时间。
RETENTION retentionPeriod
是与最大现有时间戳相比的最长保留期(以毫秒为单位)。
仅在创建新的时间序列时才使用它。如果要将样本添加到现有时间序列,则会忽略它。看RETENTION
在TS.CREATE
.
RETENTION
在TS.CREATE
.CHUNK_SIZE size
是为每个数据块分配的内存大小(以字节为单位)。
仅在创建新的时间序列时才使用它。如果要将样本添加到现有时间序列,则会忽略它。看CHUNK_SIZE
在TS.CREATE
.
DUPLICATE_POLICY policy
仅在创建新的时间序列时才使用它。如果要将样本添加到现有时间序列,则会忽略它。看DUPLICATE_POLICY
在TS.CREATE
.
IGNORE ignoreMaxTimediff ignoreMaxValDiff
是处理重复样本的策略。如果满足以下条件,则新样本被视为重复样本,并被忽略:
- 时间序列不是压缩;
- 时间序列的
DUPLICATE_POLICY
是LAST
; - 样本按顺序添加 (
timestamp ≥ max_timestamp
); - 当前时间戳与前一个时间戳的差值 (
timestamp - max_timestamp
) 小于或等于IGNORE_MAX_TIME_DIFF
; - 当前值与前一个最大时间戳 (
abs(value - value_at_max_timestamp
) 小于或等于IGNORE_MAX_VAL_DIFF
.
哪里max_timestamp
是时间序列中时间戳最大的样本的时间戳,以及value_at_max_timestamp
是max_timestamp
.
未指定时:设置为全局 IGNORE_MAX_TIME_DIFF 和 IGNORE_MAX_VAL_DIFF,默认情况下,它们都设置为 0。
这些参数在创建新的时间序列时用于设置每键参数,在使用现有时间序列调用时忽略这些参数(使用现有的每键配置参数)。
LABELS [{label value}...]
是一组标签-值对,这些标签-值对表示键的元数据标签并用作二级索引。
仅在创建新的时间序列时才使用它。如果要将样本添加到现有时间序列,则会忽略它。看LABELS
在TS.CREATE
.
- 您可以使用此命令创建新的时间序列,并通过单个命令向其添加样本。
RETENTION
,ENCODING
,CHUNK_SIZE
,DUPLICATE_POLICY
,IGNORE
和LABELS
仅在创建新时间序列时使用,在现有时间序列中添加或修改样本时忽略。 - 设置
RETENTION
和LABELS
引入了额外的时间复杂性。
返回值
返回以下回复之一:
- Integer reply - 已更新插入样本的时间戳。如果忽略样本(参见
IGNORE
在TS.CREATE
),则回复将是时间序列中的最大时间戳。 - [] 时(参数无效、键类型错误等),或者
timestamp
不等于或大于最大现有时间戳