TS.DECRBY

减少最新样本的值

语法

TS.DECRBY key value [TIMESTAMP timestamp] [RETENTION retentionPeriod] [UNCOMPRESSED] [CHUNK SIZE size] [LABELS label value [label value ...]]

引入版本:1.0.0

复杂度摘要:O(M)

减少具有最大现有时间戳的样本的值,或者创建一个新样本,其值等于具有最大现有时间戳的样本的值,并具有给定的减量

示例

必需参数

key

是时间序列的键名称。

subtrahend

是减数的数值(双精度)。如果减数为 NaN,则返回错误。

Notes - When specified key does not exist, a new time series is created. - You can use this command as a counter or gauge that automatically gets history as a time series. - If a policy for handling duplicate samples (IGNORE) is defined for this time series - TS.DECRBY operations are affected as well (sample additions/modifications can be filtered). - Explicitly adding samples to a compacted time series (using TS.ADD, TS.MADD, TS.INCRBY, or TS.DECRBY) may result in inconsistencies between the raw and the compacted data. The compaction process may override such samples.

可选参数

TIMESTAMP timestamp

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

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

timestamp 必须等于或大于最大现有时间戳。当相等时,具有最大现有时间戳的样本的值会减少。如果更高,则创建一个时间戳设置为 timestamp 的新样本,并将其值设置为现有时间戳最大的样本值减去 subtrahend。

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

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

NaN Handling (Redis 8.6+): An error is returned if the current value at the maximum existing timestamp is NaN.

RETENTION retentionPeriod

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

仅当您要创建新时间序列时才使用它。如果您将样本添加到现有时间序列中,它将被忽略。请参阅 TS.CREATE 中的 RETENTION。

ENCODING enc

指定系列样本编码格式。

仅当您要创建新时间序列时才使用它。如果您将样本添加到现有时间序列中,它将被忽略。请参阅 TS.CREATE 中的 ENCODING。

CHUNK_SIZE size

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

仅当您要创建新时间序列时才使用它。如果您将样本添加到现有时间序列中,它将被忽略。请参阅 TS.CREATE 中的 CHUNK_SIZE。

DUPLICATE_POLICY policy

是处理具有相同时间戳的多个样本的插入(TS.ADD 和 TS.MADD)的策略。

仅当您要创建新时间序列时才使用它。如果您将样本添加到现有时间序列中,它将被忽略。请参阅 TS.CREATE 中的 DUPLICATE_POLICY。

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}...]

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

仅当您要创建新时间序列时才使用它。如果您将样本添加到现有时间序列中,它将被忽略。请参阅 TS.CREATE 中的 LABELS。

Notes - You can use this command to create a new time series and add a sample to it in a single command. RETENTION, ENCODING, CHUNK_SIZE, DUPLICATE_POLICY, IGNORE, and LABELS are used only when creating a new time series, and ignored when adding or modifying samples in an existing time series. - Setting RETENTION and LABELS introduces additional time complexity.

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 支持
✅ 灵活且每年一次
✅ 免费和固定

返回值

RESP2

以下之一: * 整数回复:更新插入的样本的时间戳。如果样本被忽略(参见TS.CREATE中的IGNORE),则回复将是时间序列中最大的时间戳。 * 简单错误回复 在这些情况下:无效的参数、错误的键类型,或者 timestamp 不等于或大于最大现有时间戳。

RESP3

以下之一: * 整数回复:更新插入的样本的时间戳。如果样本被忽略(参见TS.CREATE中的IGNORE),则回复将是时间序列中最大的时间戳。 * 简单错误回复 在这些情况下:无效的参数、错误的键类型,或者 timestamp 不等于或大于最大现有时间戳。

参见

TS.INCRBY | TS.CREATE

Redis时间系列

资料来源:Redis 官方 TS.DECRBY 文档;中文内容参考 Redis 文档许可。