跳到主要内容

Redis 时间序列模块

Redis 时间序列模块(RedisTimeSeries)是 Redis 的一个扩展模块,专门用于高效存储和查询时间序列数据。时间序列数据是按时间顺序排列的数据点集合,常见于监控、物联网、金融分析等领域。RedisTimeSeries 提供了强大的功能,如数据压缩、聚合查询和时间范围过滤,使其成为处理时间序列数据的理想选择。

什么是时间序列数据?

时间序列数据是按时间顺序记录的数据点集合。例如,温度传感器的每小时读数、股票市场的每分钟价格或网站的每秒访问量都是时间序列数据。这类数据的特点是数据量大、时间维度强,因此需要专门的工具来高效存储和查询。

Redis TimeSeries 的核心功能

RedisTimeSeries 提供了以下核心功能:

  1. 高效存储:通过数据压缩技术减少存储空间。
  2. 快速查询:支持按时间范围、标签和聚合函数查询数据。
  3. 数据聚合:支持对时间序列数据进行聚合操作,如求和、平均值、最大值、最小值等。
  4. 标签支持:可以为时间序列数据添加标签,方便分类和查询。

安装 RedisTimeSeries

要使用 RedisTimeSeries,首先需要安装 Redis 并加载 RedisTimeSeries 模块。以下是安装步骤:

  1. 下载并编译 RedisTimeSeries 模块:

    bash
    git clone https://github.com/RedisTimeSeries/RedisTimeSeries.git
    cd RedisTimeSeries
    make
  2. 启动 Redis 并加载 RedisTimeSeries 模块:

    bash
    redis-server --loadmodule ./redistimeseries.so

基本操作

创建时间序列

使用 TS.CREATE 命令创建一个新的时间序列:

bash
TS.CREATE temperature LABELS sensor_id 1 location "room1"
  • temperature 是时间序列的名称。
  • LABELS 用于为时间序列添加标签,方便后续查询。

添加数据点

使用 TS.ADD 命令向时间序列中添加数据点:

bash
TS.ADD temperature 1633024800000 25.3
  • 1633024800000 是时间戳(以毫秒为单位)。
  • 25.3 是温度值。

查询数据

使用 TS.RANGE 命令查询时间序列中的数据:

bash
TS.RANGE temperature 1633024800000 1633028400000
  • 16330248000001633028400000 分别是查询的起始和结束时间戳。

输出示例:

bash
1) 1) (integer) 1633024800000
2) "25.3"
2) 1) (integer) 1633028400000
2) "26.1"

数据聚合

使用 TS.RANGE 命令的 AGGREGATION 参数对数据进行聚合:

bash
TS.RANGE temperature 1633024800000 1633028400000 AGGREGATION avg 3600000
  • avg 是聚合函数(平均值)。
  • 3600000 是聚合的时间窗口(1小时)。

输出示例:

bash
1) 1) (integer) 1633024800000
2) "25.7"

实际案例

监控系统

假设你正在构建一个监控系统,需要记录服务器的 CPU 使用率。你可以使用 RedisTimeSeries 来存储和查询这些数据。

  1. 创建时间序列:

    bash
    TS.CREATE cpu_usage LABELS server_id 1
  2. 添加数据点:

    bash
    TS.ADD cpu_usage 1633024800000 75.2
    TS.ADD cpu_usage 1633028400000 80.1
  3. 查询数据:

    bash
    TS.RANGE cpu_usage 1633024800000 1633028400000
  4. 聚合数据:

    bash
    TS.RANGE cpu_usage 1633024800000 1633028400000 AGGREGATION max 3600000

物联网设备

假设你正在管理一组物联网设备,需要记录每个设备的温度数据。你可以使用 RedisTimeSeries 来存储和查询这些数据。

  1. 创建时间序列:

    bash
    TS.CREATE device_temperature LABELS device_id 1 location "room1"
  2. 添加数据点:

    bash
    TS.ADD device_temperature 1633024800000 22.5
    TS.ADD device_temperature 1633028400000 23.1
  3. 查询数据:

    bash
    TS.RANGE device_temperature 1633024800000 1633028400000
  4. 聚合数据:

    bash
    TS.RANGE device_temperature 1633024800000 1633028400000 AGGREGATION min 3600000

总结

Redis 时间序列模块(RedisTimeSeries)是一个强大的工具,适用于存储和查询时间序列数据。通过本文,你学习了如何安装 RedisTimeSeries、创建时间序列、添加数据点、查询数据以及进行数据聚合。我们还通过实际案例展示了 RedisTimeSeries 在监控系统和物联网设备中的应用。

提示

如果你想进一步学习 RedisTimeSeries,可以参考 RedisTimeSeries 官方文档

备注

练习:尝试使用 RedisTimeSeries 记录你所在城市的天气数据,并查询过去一周的平均温度。