Redis可以通过LINDEX key index获取list中的特定值, 但无法直接删除特定索引下的值.
LSET与LREM结合删除list中特定索引的值
两步:
- 先用
LSET在指定索引位置上设置特殊值:LSET key index value在指定索引位置的值替换为value - 再用
LREM删除该特殊值:LREM key n value, 从左边删除n个value
例如删除list1索引3对应的在值
LSET list1 3 del
LREM list1 1 del补充
在Redis中, list是双向链表有两种索引:
- 正向索引:
0, 1, 2, 3, ... - 逆向索引:
-1, -2, -3, ...
与删除的相关的操作有:
LPOP / RPOP key: 从左边/右边弹出一个值LREM key n value: 从左边删除n个valueLTRIM key begin-index, end-index: 仅保留指定区间的元素
Redis的区间都是闭区间, [begin-index, end-index]