TS.MGET

语法
TS.MGET [LATEST] [WITHLABELS | <SELECTED_LABELS label...>] FILTER filterExpr...
可用版本
Redis 开源版 / TimeSeries 1.0.0
时间复杂度
O(n),其中 n 是匹配过滤条件的时间序列数量
ACL 分类
@timeseries, @read, @slow,

从每个匹配特定过滤条件的时间序列中获取具有最高时间戳的样本。

注意
仅当当前用户对匹配过滤条件的所有键都具有读取权限时,此命令才会回复。否则,它将回复 "(error): current user doesn't have read permission to one or more keys that match the specified filter"。

示例

必选参数

FILTER filterExpr...

根据时间序列的标签和标签值进行过滤。每个过滤表达式具有以下语法之一:

  • label!= - 时间序列包含名为 label 的标签
  • label=value - 时间序列包含名为 label 且值为 value 的标签
  • label=(value1,value2,...) - 时间序列包含名为 label 且值等于列表中的任一值的标签
  • label= - 时间序列不包含名为 label 的标签
  • label!=value - 时间序列不包含名为 label 且值为 value 的标签
  • label!=(value1,value2,...) - 时间序列不包含名为 label 且值等于列表中任一值的标签

注意事项

  • 至少需要一个语法为 label=valuelabel=(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

在回复中包含时间序列的所有元数据标签的标签-值对。如果未指定 WITHLABELSSELECTED_LABELS,则默认情况下将报告一个空列表作为标签-值对。

SELECTED_LABELS label...(自 RedisTimeSeries v1.6 起可用)

返回代表时间序列元数据标签的标签-值对的子集。当每个时间序列存在大量标签,但只需要其中一些标签的值时使用。如果未指定 WITHLABELSSELECTED_LABELS,则默认情况下将报告一个空列表作为标签-值对。

注意: 在 Redis 集群上运行时,MGET 命令不能成为事务的一部分。

返回值

  • 数组回复:对于每个匹配指定过滤条件的时间序列,会报告以下内容:

示例

选择要检索的标签

创建特拉维夫和耶路撒冷的温度时间序列,然后添加不同的温度样本。

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

RedisTimeSeries


评价此页面
回到顶部 ↑
© . This site is unofficial and not affiliated with Redis, Inc.