*Redis TS.DEL 命令

TS.DEL 删除时间序列中的指定数据点,或删除整个时间序列(当不指定时间范围时)。


*语法

TS.DEL key [fromTimestamp] [toTimestamp]

*参数说明

参数 类型 必填 说明
key String 时间序列键名
fromTimestamp Integer 删除范围起始时间戳(毫秒),包含
toTimestamp Integer 删除范围结束时间戳(毫秒),包含

*返回值

  • Integer:删除的数据点数量
  • Error:键不存在、键类型不匹配等

*时间复杂度

O(N),N 为删除范围内的数据点数量。


*示例

*删除整个时间序列

> TS.DEL temperature:room1
(integer) 1000

*删除指定范围

> TS.DEL temperature:room1 1625097600000 1625184000000
(integer) 144

*删除单个数据点

> TS.DEL temperature:room1 1625232000000 1625232000000
(integer) 1

*常见错误

错误 原因 解决
TSDB: key does not exist 时间序列不存在 检查 key 名
WRONGTYPE key 不是时间序列 确认 key 类型

*最佳实践

  • 删除大范围数据会阻塞,建议在低峰期执行
  • 删除整个序列时,TS.DEL 和 DEL 效果不同:TS.DEL 保留序列元数据,DEL 完全删除 key
  • 需要清理旧数据时,优先调整 RETENTION 让自动清理生效

*FAQ

Q1: TS.DEL 和 DEL 的区别? A: TS.DEL 删除数据点但保留序列元数据;DEL 完全删除整个 key。

Q2: 删除范围时边界包含吗? A: 包含,fromTimestamp 和 toTimestamp 的数据点都会被删除。

Q3: 可以按条件删除吗? A: 不能直接按值条件删除,需先 TS.RANGE 查询再逐个删除。