*Redis TS.CREATE 命令

TS.CREATE 创建一个新的空时间序列,可配置保留期、标签、压缩策略等元数据。


*语法

TS.CREATE key [RETENTION retentionPeriod] [ENCODING [COMPRESSED|UNCOMPRESSED]] [CHUNK_SIZE size] [DUPLICATE_POLICY [BLOCK | FIRST | LAST | MIN | MAX | SUM]] [IGNORE ignoreMaxTimediff ignoreMaxValDiff] [LABELS {label value} ...]

*参数说明

参数 类型 必填 说明
key String 时间序列键名
RETENTION Integer 数据保留时间(毫秒),0 表示永久保留
ENCODING Enum 编码方式:COMPRESSED(默认)或 UNCOMPRESSED
CHUNK_SIZE Integer 每个数据块大小(字节),默认 4096
DUPLICATE_POLICY Enum 重复时间戳处理策略:BLOCK(默认)、FIRST、LAST、MIN、MAX、SUM
IGNORE List 忽略时间差和值差范围内的重复数据
LABELS List 标签键值对,用于 TS.MGET / TS.MRANGE 查询

*返回值

  • OK:创建成功
  • Error:键已存在、参数错误等

*时间复杂度

O(1)

*

*示例

*基本创建

> TS.CREATE temperature:room1
OK

*带保留期和标签

> TS.CREATE temperature:room1 RETENTION 86400000 LABELS sensor temp room 1
OK

*指定压缩和块大小

> TS.CREATE temperature:room2 ENCODING COMPRESSED CHUNK_SIZE 8192
OK

*指定重复策略

> TS.CREATE stock:price DUPLICATE_POLICY LAST
OK

*常见错误

错误 原因 解决
TSDB: key already exist 键已存在 使用其他 key 名,或先删除旧键

*最佳实践

  • 提前规划命名规范,如 {metric}:{entity}(temperature:room1)
  • 合理设置 RETENTION,避免内存无限增长
  • 高频写入场景使用 COMPRESSED 节省内存
  • 用 LABELS 组织多维度查询(房间、楼层、区域等)

*FAQ

Q1: TS.CREATE 和 TS.ADD 自动创建的区别? A: TS.CREATE 创建空序列,更灵活;TS.ADD 自动创建时参数受限。推荐先 TS.CREATE 再 TS.ADD

Q2: 一个 Redis 实例可以创建多少时间序列? A: 取决于内存,通常可支持数万到数十万个时间序列。

Q3: 创建后可以改名吗? A: 不能直接改名,可用 RENAME 命令重命名整个 key。