学习

Redis 时间序列

RedisTimeseries 是一个 Redis 模块,它可以增强您使用 Redis 管理时间序列数据的体验。它简化了 Redis 在时间序列用例中的使用,例如物联网 (IoT) 数据、股票价格和遥测数据。使用 Redis Time Series,您可以以 Redis 的速度摄取和查询数百万个样本和事件。高级工具,例如降采样和聚合,确保在不影响性能的情况下减小内存占用。使用各种查询进行可视化和监控,并内置连接器连接到流行的监控工具,例如 Grafana、Prometheus 和 Telegraf。

步骤 1. 注册和订阅#

请 点击此链接注册 并订阅 Redis Cloud

步骤 2. 使用 Redis Time Series 模块创建数据库#

步骤 3. 连接到数据库#

请 点击这里 了解如何连接到数据库

步骤 4. Redis Time Series 入门#

本节将指导您使用一些基本的 RedisTimeseries 命令。您可以在 Redis 命令行界面 (redis-cli) 中运行它们,也可以使用 RedisInsight 中提供的 CLI。(请参阅本教程的第 2 部分,详细了解如何使用 RedisInsight CLI。)使用基本空气质量数据集,我们将向您展示如何

  • 创建新的时间序列
  • 将新的样本添加到时间序列列表中
  • 查询一个或多个时间序列的范围

创建新的时间序列

让我们创建一个代表空气质量数据集测量的時間序列。要与 Redis Time Series 交互,您最常使用 TS.RANGE 命令,但在这里您将使用 TS.CREATE 命令为每个测量值创建一个时间序列。创建后,所有测量值都将使用 TS.ADD 发送。

以下示例命令创建了一个时间序列,并使用三个条目对其进行填充

>> TS.CREATE ts:carbon_monoxide
>> TS.CREATE ts:relative_humidity
>> TS.CREATE ts:temperature RETENTION 60 LABELS sensor_id 2 area_id 32

在上面的示例中,ts:carbon_monoxide、ts:relative_humidity 和 ts:temperature 是键名。我们正在创建一个具有两个标签(sensor_id 和 area_id 是分别具有值 2 和 32 的字段)和 60 毫秒的保留窗口的时间序列

向时间序列添加新的样本数据

让我们开始将样本添加到将使用此命令自动创建的键中

>> TS.ADD ts:carbon_monoxide 1112596200 2.4
>> TS.ADD ts:relative_humidity 1112596200 18.3
>> TS.ADD ts:temperature 1112599800 28.3
>> TS.ADD ts:carbon_monoxide 1112599800 2.1
>> TS.ADD ts:relative_humidity 1112599800 13.5
>> TS.ADD ts:temperature 1112603400 28.5
>> TS.ADD ts:carbon_monoxide 1112603400 2.2
>> TS.ADD ts:relative_humidity 1112603400 13.1
>> TS.ADD ts:temperature 1112607000 28.7

查询样本

现在您在时间序列中有了样本数据,您就可以准备问诸如

“如何获取最后一个样本?”

TS.GET 用于获取最后一个样本。当时间序列包含数据时,返回的数组将包含最后一个样本时间戳,后跟最后一个样本值

>> TS.GET ts:temperature
1) (integer) 1112607000
2) "28.7"

“如何获取与特定过滤器匹配的最后一个样本?”

TS.MGET 用于获取与特定过滤器匹配的最后一个样本

>> TS.MGET FILTER area_id=32
1) 1) "ts:temperature"
   2) (empty list or set)
   3) 1) (integer) 1112607000
      2) "28.7"

“如何获取标签与特定过滤器匹配的样本?”

>> TS.MGET WITHLABELS FILTER area_id=32
1) 1) "ts:temperature"
   2) 1) 1) "sensor_id"
         2) "2"
      2) 1) "area_id"
         2) "32"
   3) 1) (integer) 1112607000
      2) "28.7"

查询一个或多个时间序列的范围

TS.RANGE 用于在正方向查询范围,而 TS.REVRANGE 用于在反方向查询范围。它们可以让您回答诸如

“如何获取某个时间范围内的样本?”

>> TS.RANGE ts:carbon_monoxide 1112596200 1112603400
1) 1) (integer) 1112596200
   2) "2.4"
2) 1) (integer) 1112599800
   2) "2.1"
3) 1) (integer) 1112603400
   2) "2.2"

聚合

您可以使用各种聚合类型,例如 avg、sum、min、max、range、count、first、last 等。以下示例展示了如何使用“avg”聚合类型来回答诸如

“如何获取某个时间范围内使用某些聚合规则的样本?”

>> TS.RANGE ts:carbon_monoxide 1112596200 1112603400 AGGREGATION avg 2
1) 1) (integer) 1112596200
   2) "2.4"
2) 1) (integer) 1112599800
   2) "2.1"
3) 1) (integer) 1112603400
   2) "2.2"

后续步骤#

  • 在 快速入门 教程中了解有关 Redis Time Series 的更多信息。
上次更新时间 2024 年 3 月 4 日