Redis可以通过LINDEX key index获取list中的特定值, 但无法直接删除特定索引下的值.

两步:

  1. 先用LSET在指定索引位置上设置特殊值: LSET key index value在指定索引位置的值替换为value
  2. 再用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个value
  • LTRIM key begin-index, end-index: 仅保留指定区间的元素

    Redis的区间都是闭区间, [begin-index, end-index]