*Redis JSON.ARRTRIM 命令

JSON.ARRTRIM 在 RedisJSON 中裁剪指定路径的数组,保留指定范围内的元素,删除其余部分。


*语法

JSON.ARRTRIM key path start stop

*参数说明

参数 类型 必填 说明
key String JSON 文档键名
path String JSONPath 路径
start Integer 起始索引(含)
stop Integer 结束索引(含)

*返回值

  • Integer:裁剪后数组的新长度
  • Error:路径不存在或目标不是数组

*时间复杂度

O(N),N 为数组长度


*示例

*基本用法

> JSON.SET doc $ '{"arr": [1, 2, 3, 4, 5]}'
OK
> JSON.ARRTRIM doc $.arr 1 3
(integer) 3
> JSON.GET doc
"{\"arr\":[2,3,4]}"

*裁剪到空数组

> JSON.ARRTRIM doc $.arr 0 0
(integer) 1
> JSON.ARRTRIM doc $.arr 1 0
(integer) 0
> JSON.GET doc
"{\"arr\":[]}"

*常见错误

错误 原因 解决
ERR path does not exist 路径不存在 确认路径正确
ERR path not an array 目标不是数组 确认路径指向数组

*最佳实践

  • 使用 start > stop 裁剪为空数组
  • 配合负索引可以简化操作(如果支持)
  • 用于实现固定大小的数组或队列

*FAQ

Q1: start 和 stop 超出范围会怎样? A: 超出部分会被忽略,只保留有效范围。

Q2: 可以裁剪到空数组吗? A: 可以,使用 start > stop 或 start 超出范围。

Q3: 和 JSON.ARRPOP 有什么区别? A: ARRTRIM 批量裁剪保留范围;ARRPOP 删除单个元素并返回。