TS.MGET
TS.MGET [LATEST] [WITHLABELS | <SELECTED_LABELS label...>] FILTER filterExpr...
- 可用版本
- Redis 开源版 / TimeSeries 1.0.0
- 时间复杂度
- O(n),其中 n 是匹配过滤条件的时间序列数量
- ACL 分类
-
@timeseries,@read,@slow,
从每个匹配特定过滤条件的时间序列中获取具有最高时间戳的样本。
必选参数
FILTER filterExpr...
根据时间序列的标签和标签值进行过滤。每个过滤表达式具有以下语法之一:
label!=- 时间序列包含名为label的标签label=value- 时间序列包含名为label且值为value的标签label=(value1,value2,...)- 时间序列包含名为label且值等于列表中的任一值的标签label=- 时间序列不包含名为label的标签label!=value- 时间序列不包含名为label且值为value的标签label!=(value1,value2,...)- 时间序列不包含名为label且值等于列表中任一值的标签
- 至少需要一个语法为
label=value或label=(value1,value2,...)的过滤表达式。 - 过滤表达式是连接性的(逻辑与)。例如,过滤条件
type=temperature room=study表示时间序列是书房的温度时间序列。 - 过滤表达式中不允许有空格,除非值在单引号或双引号内——例如,
x="y y"或x='(y y,z z)'。
可选参数
LATEST(自 RedisTimeSeries v1.8 起可用)
用于时间序列进行压缩时。使用 LATEST,TS.MGET 也会报告最新(可能不完整)桶的压缩值,前提是此桶的开始时间落在 [fromTimestamp, toTimestamp] 范围内。不使用 LATEST 时,TS.MGET 不会报告最新(可能不完整)的桶。当时间序列不是压缩时,LATEST 参数会被忽略。
压缩中最新桶的数据可能是不完整的。只有当新的样本到达并打开一个新的最新桶时,一个桶才会被关闭并压缩。然而,在某些情况下,也需要最新(可能不完整)桶的压缩值。在这种情况下,请使用 LATEST。
WITHLABELS
在回复中包含时间序列的所有元数据标签的标签-值对。如果未指定 WITHLABELS 或 SELECTED_LABELS,则默认情况下将报告一个空列表作为标签-值对。
SELECTED_LABELS label...(自 RedisTimeSeries v1.6 起可用)
返回代表时间序列元数据标签的标签-值对的子集。当每个时间序列存在大量标签,但只需要其中一些标签的值时使用。如果未指定 WITHLABELS 或 SELECTED_LABELS,则默认情况下将报告一个空列表作为标签-值对。
MGET 命令不能成为事务的一部分。
返回值
- 数组回复:对于每个匹配指定过滤条件的时间序列,会报告以下内容:
- bulk-string-reply:时间序列键名
- 数组回复:标签-值对(Bulk string 回复,Bulk string 回复)
- 默认情况下,报告一个空数组
- 如果指定了
WITHLABELS,则报告与此时间序列关联的所有标签 - 如果指定了
SELECTED_LABELS label...,则报告选定的标签(如果未定义此类标签,则值为 null)
- 数组回复:一个时间戳-值对(Integer 回复,Simple string 回复(双精度浮点数))
示例
选择要检索的标签
创建特拉维夫和耶路撒冷的温度时间序列,然后添加不同的温度样本。
127.0.0.1:6379> TS.CREATE temp:TLV LABELS type temp location TLV
OK
127.0.0.1:6379> TS.CREATE temp:JLM LABELS type temp location JLM
OK
127.0.0.1:6379> TS.MADD temp:TLV 1000 30 temp:TLV 1010 35 temp:TLV 1020 9999 temp:TLV 1030 40
1) (integer) 1000
2) (integer) 1010
3) (integer) 1020
4) (integer) 1030
127.0.0.1:6379> TS.MADD temp:JLM 1005 30 temp:JLM 1015 35 temp:JLM 1025 9999 temp:JLM 1035 40
1) (integer) 1005
2) (integer) 1015
3) (integer) 1025
4) (integer) 1035获取与最后一个样本关联的所有标签。
127.0.0.1:6379> TS.MGET WITHLABELS FILTER type=temp
1) 1) "temp:JLM"
2) 1) 1) "type"
2) "temp"
2) 1) "location"
2) "JLM"
3) 1) (integer) 1035
2) 40
2) 1) "temp:TLV"
2) 1) 1) "type"
2) "temp"
2) 1) "location"
2) "TLV"
3) 1) (integer) 1030
2) 40要仅获取每个最后一个样本的 location 标签,请使用 SELECTED_LABELS。
127.0.0.1:6379> TS.MGET SELECTED_LABELS location FILTER type=temp
1) 1) "temp:JLM"
2) 1) 1) "location"
2) "JLM"
3) 1) (integer) 1035
2) 40
2) 1) "temp:TLV"
2) 1) 1) "location"
2) "TLV"
3) 1) (integer) 1030
2) 40另请参阅
TS.MRANGE | TS.RANGE | TS.MREVRANGE | TS.REVRANGE