Redis LINSERT 命令表示将值 value 插入到指定列表 key 当中,位于值 pivot 之前或之后。当指定元素不存在于列表中时,不执行任何操作。当列表不存在时,被视为空列表,不执行任何操作。如果 key 不是列表类型,返回一个错误。
命令格式
LINSERT key BEFORE|AFTER pivot value
可用版本:2.2.0
时间复杂度:O(N),N 为寻找 pivot 过程中经过的元素数量。当 pivot 在列表的头位置时,时间复杂度为 O(1),当 pivot 在列表的尾部时,时间复杂度为 O(N)。
命令参数
- BEFORE|AFTER:分别表示在 pivot 元素之前或之后位置。
- pivot:基准元素。
命令返回值
LINSERT 命令返回有 3 种情况:
- 返回列表的长度,当指定的列表中 pivot 元素存在时,返回插入操作后的列表长度。
- 返回 0,当指定的列表 key 不存在或者列表为空时。
- 返回 -1,当指定的列表中 pivot 元素不存在时。
示例
redis> LINSERT list AFTER beijing shanghai # 列表 key 不存在,返回 0
(integer) 0
redis> LPUSH list beijing
(integer) 1
redis> LINSERT list AFTER beijing shanghai # 列表 key 存在,且 pivot 也存在,返回插入操作的后列表长度
(integer) 2
redis> LINSERT list AFTER guangzhou shenzhen # 列表 key 存在,但 pivot 不存在,返回 -1
(integer) -1
redis>