*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。