当 Redis 列表只有一条记录时无法 ltrim
Unable to ltrim when Redis list is having only one record
我尝试使用以下命令 trim redis
队列中的记录。但不幸的是,如果列表中只有一项,则无法 trim。
ltrim key, -1, 0;
对于ltrim key start_index stop_index
命令,索引是从零开始的。 0
是第一个元素的索引,-1
是最后一个元素的索引。如果 start_index
大于 stop_index
,Redis 清空列表,即删除 key
.
根据上面的定义,我们来看看你的命令:
ltrim key -1 0
start_index
为-1
,即最后一个元素的索引,stop_index
为0,即第一个元素的索引。
如果列表有多个元素,则 start_index
大于 stop_index
。在这种情况下,列表 /key
将被删除。但是,如果列表中只有一个元素,则 start_index
和 stop_index
都是列表的第一个(也是最后一个)元素的索引。您的命令与以下命令具有相同的效果:ltrim key 0 0
。通过这个命令,Redis保留了列表的第一个元素(也是唯一的元素),列表不会trimmed.
顺便问一下,你想删除列表吗?如果你这样做,只需调用 del key
.
我尝试使用以下命令 trim redis
队列中的记录。但不幸的是,如果列表中只有一项,则无法 trim。
ltrim key, -1, 0;
对于ltrim key start_index stop_index
命令,索引是从零开始的。 0
是第一个元素的索引,-1
是最后一个元素的索引。如果 start_index
大于 stop_index
,Redis 清空列表,即删除 key
.
根据上面的定义,我们来看看你的命令:
ltrim key -1 0
start_index
为-1
,即最后一个元素的索引,stop_index
为0,即第一个元素的索引。
如果列表有多个元素,则 start_index
大于 stop_index
。在这种情况下,列表 /key
将被删除。但是,如果列表中只有一个元素,则 start_index
和 stop_index
都是列表的第一个(也是最后一个)元素的索引。您的命令与以下命令具有相同的效果:ltrim key 0 0
。通过这个命令,Redis保留了列表的第一个元素(也是唯一的元素),列表不会trimmed.
顺便问一下,你想删除列表吗?如果你这样做,只需调用 del key
.