学习

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 的更多信息。
上次更新于 2025 年 1 月 31 日