是否可以删除redis列表中特定索引处的元素?没找到我想要的东西。有一个修剪,允许您选择一组特定的元素,LREM允许您按值删除列表中的项目,但我没有值。
我找到了一个hack,您可以使用LSET将元素的值更改为UID或字符串,例如'删除',你在这个值上调用LREM。这只是感觉有点脏。
答案 0 :(得分:8)
因此,实现我想要的唯一方法是将索引处的值设置为预先确定的字符串,然后按值进行删除。
在此处查看讨论https://groups.google.com/forum/#!topic/redis-db/c-IpJ0YWa9I
在红宝石中如下
@redis.lset("#{@namespace}/#{specified_queue}", index, "DELETED")
@redis.lrem("#{@namespace}/#{specified_queue}", 1, "DELETED")
LSET docs http://redis.io/commands/lset LREM docs http://redis.io/commands/lrem
答案 1 :(得分:2)
我能够使用redis-cli找到基于索引的解决方案。
INDEX=<index (starts at 0)>
redis-cli -h <host> -p <port> LREM <list name> 1 "$(redis-cli -h <host> -p <port> LINDEX <list name> $INDEX)"
LINDEX找到索引的值,然后LREM使用该值并从列表中删除它。
我在这里处理的是独特的价值观。这只会删除找到的第一个项目。