TS.MADD
语法
TS.MADD {key timestamp value}...
- 可用版本
- Redis 开源版 / TimeSeries 1.0.0
- 时间复杂度
- 当 N 是更新的系列数量,M 是压缩规则数量时,时间复杂度为 O(N*M);没有压缩时,时间复杂度为 O(N)
- ACL 分类
-
@timeseries,@write,@slow,
将新样本追加到一个或多个时间序列中
必需参数
key
是时间序列的键名。
timestamp
是 Unix 时间(毫秒为单位的整数),指定样本的时间戳;或者使用 * 表示将样本时间戳设置为服务器时钟的 Unix 时间。
Unix 时间是从 1970 年 1 月 1 日协调世界时 00:00:00(Unix 纪元)开始经过的毫秒数,不包含因闰秒进行的调整。
value
是样本的数值(双精度浮点数)。双精度浮点数应遵循 RFC 7159(JSON 标准)。解析器会拒绝过大的值,这些值无法容纳在 binary64 中。它不接受 NaN 或无穷大值。
- 如果
timestamp与现有最大时间戳相比早于保留期,则该样本将被丢弃并返回错误。 - 显式向已压缩时间序列添加样本(使用
TS.ADD、TS.MADD、TS.INCRBY或TS.DECRBY)可能导致原始数据和压缩数据之间不一致。压缩过程可能会覆盖此类样本。 - 不能像使用
TS.ADD时那样指定ignoreMaxTimeDiff和ignoreMaxValDiff。但是,基于每个键的配置参数值,相同的逻辑仍然适用。请参阅TS.ADD命令页面获取更多信息。
返回值
返回以下回复之一
- 数组回复,其中每个元素都是一个 整数回复,表示 upserted(插入或更新)样本的时间戳,或一个 [](当去重策略为
BLOCK时,或当timestamp与现有最大时间戳相比早于保留期时)。对于每个被忽略的元素(参见TS.CREATE中的IGNORE),回复元素的值将是时间序列中最大的时间戳。 - [](参数无效、键类型错误等)
复杂度
如果时间序列上存在压缩规则,TS.MADD 的性能可能会降低。TS.MADD 的复杂度始终是 O(N*M),其中 N 是更新的系列数量,M 是压缩规则的数量;没有压缩时,复杂度为 O(N)。
示例
在不同时间戳添加股票价格
创建两只股票并在三个不同时间戳添加其价格。
127.0.0.1:6379> TS.CREATE stock:A LABELS type stock name A
OK
127.0.0.1:6379> TS.CREATE stock:B LABELS type stock name B
OK
127.0.0.1:6379> TS.MADD stock:A 1000 100 stock:A 1010 110 stock:A 1020 120 stock:B 1000 120 stock:B 1010 110 stock:B 1020 100
1) (integer) 1000
2) (integer) 1010
3) (integer) 1020
4) (integer) 1000
5) (integer) 1010
6) (integer) 1020另请参阅
TS.MRANGE | TS.RANGE | TS.MREVRANGE | TS.REVRANGE