当 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_indexstop_index 都是列表的第一个(也是最后一个)元素的索引。您的命令与以下命令具有相同的效果:ltrim key 0 0。通过这个命令,Redis保留了列表的第一个元素(也是唯一的元素),列表不会trimmed.

顺便问一下,你想删除列表吗?如果你这样做,只需调用 del key.