TS.MGET

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

语法

TS.MGET [LATEST] [WITHLABELS | SELECTED LABELS label1 [label1 ...]] FILTER

引入版本:1.0.0

复杂度摘要:O(n)

[!NOTE] 此命令的行为在集群 Redis 环境中有所不同。请参阅 多键操作 页面了解更多信息。

从与特定过滤器匹配的每个时间序列中获取具有最高时间戳的样本。从 Redis 8.6 开始,NaN 值包含在结果中。

[!NOTE] 仅当当前用户对与过滤器匹配的所有键具有读取权限时,此命令才会回复。否则,它将回复“(错误):当前用户没有对与指定过滤器匹配的一个或多个键的读取权限”。

示例

必需参数

FILTER filterExpr...

根据标签和标签值过滤时间序列。

可选参数

LATEST(自 RedisTimeSeries v1.8 起)

当时间序列是压缩时使用。使用 LATEST,TS.MGET 还会报告最新(可能是部分)存储桶的压缩值,前提是该存储桶的开始时间落在 [fromTimestamp, toTimestamp] 内。如果没有 LATEST,TS.MGET 不会报告最新(可能是部分)存储桶。当时间序列不是压缩时,LATEST 被忽略。

compaction的最新bucket中的数据可能是部分的。存储桶是 关闭,并且仅在新样本到达时才进行压缩,该新样本将 打开 变为新的 最新的 存储桶。然而,在某些情况下,还需要最新(可能是部分)存储桶的压缩值。在这种情况下,请使用 LATEST。

WITHLABELS

在回复中包括表示时间序列的元数据标签的所有标签-值对。如果未指定 WITHLABELS 或 SELECTED_LABELS,默认情况下,将报告空列表作为标签值对。

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

返回表示时间序列的元数据标签的标签值对的子集。当每个系列存在大量标签,但仅需要某些标签的值时使用。如果未指定 WITHLABELS 或 SELECTED_LABELS,默认情况下,将报告空列表作为标签值对。

Note: The MGET command cannot be part of a transaction when running on a Redis cluster.

示例

Select labels to retrieve

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

redis> TS.CREATE temp:TLV LABELS type temp location TLV
OK
redis> TS.CREATE temp:JLM LABELS type temp location JLM
OK
redis> 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
redis> 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

获取与最后一个样本相关的所有标签。

redis> 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。

redis> 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

Redis Software 与 Redis Cloud 兼容性

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

返回值

RESP2

数组回复:对于与指定过滤器匹配的每个时间序列,报告以下内容: - 批量字符串回复:时间序列键名称 - 数组回复:标签值对(批量字符串回复、批量字符串回复) - 默认情况下,报告空数组 - 如果指定 WITHLABELS,则报告与该时间序列关联的所有标签 - 如果指定 SELECTED_LABELS label...,则报告所选标签(未定义此类标签时为空值) - 数组回复:单个时间戳值对(整数回复、简单字符串回复)

RESP3

地图回复:对于与指定过滤器匹配的每个时间序列,将报告以下内容: - 批量字符串回复:时间序列键名称 - 地图回复 或 数组回复:标签值对 - 默认情况下,报告空数组 - 如果指定 WITHLABELS,则与此时间序列关联的所有标签将报告为地图 - 如果指定 SELECTED_LABELS label...,则将所选标签报告为地图(未定义此类标签时为空值) - 数组回复:单个时间戳值对(整数回复、双重回复)

参见

TS.MRANGE | TS.RANGE | TS.MREVRANGE | TS.REVRANGE

Redis时间系列

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