




# 创建一个新的时间序列TS.CREATE temperature:room1 RETENTION 604800 # 设置保留期为一周# 添加数据点TS.ADD temperature:room1 * 22.5 # 自动分配当前时间戳TS.ADD temperature:room1 1618579200 23.0 # 手动指定时间戳
# 获取过去每小时的平均温度TS.RANGE temperature:room1 - + AGGREGATION avg 3600000
创建时间序列 插入数据 查询数据 使用标签进行分组查询 使用聚合函数计算平均值
import redisfrom redis.commands.timeseries import TimeSeries# 连接到 Redisredis_host = "localhost"redis_port = 6379redis_password = ""# 初始化 Redis 客户端r = redis.Redis(host=redis_host, port=redis_port, password=redis_password)ts = TimeSeries(r)# 清理之前的测试数据(可选)try:r.delete("cpu_usage", "memory_usage")except:pass# 1. 创建时间序列# 创建 CPU 使用率时间序列ts.create("cpu_usage",labels={"type": "metric", "name": "cpu"},retention_msecs=3600000 # 保留 1 小时的数据)# 创建内存使用率时间序列ts.create("memory_usage",labels={"type": "metric", "name": "memory"},retention_msecs=3600000 # 保留 1 小时的数据)# 2. 插入数据# 模拟插入 10 个数据点for i in range(10):cpu_value = 10 + i * 5 # CPU 使用率模拟值memory_value = 20 + i * 3 # 内存使用率模拟值# 添加数据点ts.add("cpu_usage", "*", cpu_value)ts.add("memory_usage", "*", memory_value)# 3. 查询数据# 查询 CPU 使用率的最后 5 个数据点cpu_data = ts.range("cpu_usage", "-", "+", count=5)print("CPU 使用率最近 5 个数据点:")for timestamp, value in cpu_data:print(f"时间戳: {timestamp}, 值: {value}")# 查询内存使用率的最后 5 个数据点memory_data = ts.range("memory_usage", "-", "+", count=5)print("\n内存使用率最近 5 个数据点:")for timestamp, value in memory_data:print(f"时间戳: {timestamp}, 值: {value}")# 4. 使用标签进行分组查询# 查询所有标签为 "type=metric" 的时间序列metric_series = ts.queryindex(["type=metric"])print("\n查询所有 type=metric 的时间序列:")for series in metric_series:print(series)# 5. 使用聚合函数计算平均值# 计算 CPU 使用率的平均值cpu_avg = ts.range("cpu_usage", "-", "+", aggregation_type="avg", time_bucket=1000)print("\nCPU 使用率的平均值:")for timestamp, avg_value in cpu_avg:print(f"时间范围: {timestamp}, 平均值: {avg_value}")# 计算内存使用率的平均值memory_avg = ts.range("memory_usage", "-", "+", aggregation_type="avg", time_bucket=1000)print("\n内存使用率的平均值:")for timestamp, avg_value in memory_avg:print(f"时间范围: {timestamp}, 平均值: {avg_value}")
CPU 使用率最近 5 个数据点:时间戳: 1694345678000, 值: 45.0时间戳: 1694345679000, 值: 50.0时间戳: 1694345680000, 值: 55.0时间戳: 1694345681000, 值: 60.0时间戳: 1694345682000, 值: 65.0内存使用率最近 5 个数据点:时间戳: 1694345678000, 值: 23.0时间戳: 1694345679000, 值: 26.0时间戳: 1694345680000, 值: 29.0时间戳: 1694345681000, 值: 32.0时间戳: 1694345682000, 值: 35.0查询所有 type=metric 的时间序列:cpu_usagememory_usageCPU 使用率的平均值:时间范围: 1694345678000, 平均值: 45.0时间范围: 1694345679000, 平均值: 50.0时间范围: 1694345680000, 平均值: 55.0时间范围: 1694345681000, 平均值: 60.0时间范围: 1694345682000, 平均值: 65.0内存使用率的平均值:时间范围: 1694345678000, 平均值: 23.0时间范围: 1694345679000, 平均值: 26.0时间范围: 1694345680000, 平均值: 29.0时间范围: 1694345681000, 平均值: 32.0时间范围: 1694345682000, 平均值: 35.0
插入数据:我们模拟了 10 个数据点的插入。 查询数据:我们查询了最近 5 个数据点。 标签查询:通过标签查询所有 type=metric 的时间序列。 聚合函数:使用 avg 聚合函数计算了平均值。
压缩策略:根据数据特性设置合适的压缩策略。 保留策略:设置合理的保留时间,避免存储过多历史数据。 标签设计:合理设计标签,便于后续查询和分组。 批量操作:尽量使用批量操作减少网络开销。


文章转载自老王两点中,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




