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.INCRBYTS.DECRBY) 可能会导致原始数据与压缩数据不一致。压缩过程可能会覆盖此类样本。

可选参数

TIMESTAMP timestamp

是 Unix 时间(整数,以毫秒为单位),指定采样时间戳,或将采样时间戳设置为服务器时钟的 Unix 时间。*

Unix 时间是自 1970 年 1 月 1 日 00:00:00 UTC(Unix 纪元)以来经过的毫秒数,未因闰秒而进行调整。

timestamp必须等于或大于最大现有时间戳。如果相等,则具有最大现有时间戳的样本的值将减小。如果该值较高,则 timestamp 设置为timestamp,并将其值设置为最大现有时间戳减去subtrahend.

如果时间序列为空,则值设置为subtrahend.

如果未指定,则时间戳将设置为服务器时钟的 Unix 时间。

RETENTION retentionPeriod

是与最大现有时间戳相比的最长保留期(以毫秒为单位)。

仅在创建新的时间序列时才使用它。如果要将样本添加到现有时间序列,则会忽略它。看RETENTIONTS.CREATE.

ENCODING enc

指定 Series 示例编码格式。

仅在创建新的时间序列时才使用它。如果要将样本添加到现有时间序列,则会忽略它。看ENCODINGTS.CREATE.

CHUNK_SIZE size

是为每个数据块分配的内存大小(以字节为单位)。

仅在创建新的时间序列时才使用它。如果要将样本添加到现有时间序列,则会忽略它。看CHUNK_SIZETS.CREATE.

DUPLICATE_POLICY policy

是处理插入 (TS.ADDTS.MADD) 的 S 值。

仅在创建新的时间序列时才使用它。如果要将样本添加到现有时间序列,则会忽略它。看DUPLICATE_POLICYTS.CREATE.

IGNORE ignoreMaxTimediff ignoreMaxValDiff

是处理重复样本的策略。如果满足以下条件,则新样本被视为重复样本,并被忽略:

  • 时间序列不是压缩;
  • 时间序列的DUPLICATE_POLICYLAST;
  • 样本按顺序添加 (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_timestampmax_timestamp.

未指定时:设置为全局 IGNORE_MAX_TIME_DIFFIGNORE_MAX_VAL_DIFF,默认情况下,它们都设置为 0。

这些参数在创建新的时间序列时用于设置每键参数,在使用现有时间序列调用时忽略这些参数(使用现有的每键配置参数)。

LABELS [{label value}...]

是一组标签-值对,这些标签-值对表示键的元数据标签并用作二级索引。

仅在创建新的时间序列时才使用它。如果要将样本添加到现有时间序列,则会忽略它。看LABELSTS.CREATE.

笔记

  • 您可以使用此命令创建新的时间序列,并通过单个命令向其添加样本。RETENTION,ENCODING,CHUNK_SIZE,DUPLICATE_POLICY,IGNORELABELS仅在创建新时间序列时使用,在现有时间序列中添加或修改样本时忽略。
  • 设置RETENTIONLABELS引入了额外的时间复杂性。

返回值

返回以下回复之一:

  • Integer reply - 已更新插入样本的时间戳。如果忽略样本(参见IGNORETS.CREATE),则回复将是时间序列中的最大时间戳。
  • [] 时(参数无效、键类型错误等),或者timestamp不等于或大于最大现有时间戳

另请参阅

TS.INCRBY|TS.CREATE

RedisTimeSeries 系列


为本页评分
返回顶部 ↑