在Redis列表中是否可以删除特定索引处的元素?我没有找到我想要的。有一个trim命令,它允许您选择一组特定的元素,LREM允许您通过值从列表中删除项,但是我没有该值。
我发现了一个技巧,您可以使用LSET将元素的值更改为UID或字符串(例如“DELETED”),然后对此值调用LREM。但是这感觉有点不太好。
在Redis列表中是否可以删除特定索引处的元素?我没有找到我想要的。有一个trim命令,它允许您选择一组特定的元素,LREM允许您通过值从列表中删除项,但是我没有该值。
我发现了一个技巧,您可以使用LSET将元素的值更改为UID或字符串(例如“DELETED”),然后对此值调用LREM。但是这感觉有点不太好。
@redis.lset("#{@namespace}/#{specified_queue}", index, "DELETED")
@redis.lrem("#{@namespace}/#{specified_queue}", 1, "DELETED")
LSET文档 http://redis.io/commands/lset LREM文档 http://redis.io/commands/lrem
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 使用该值并从列表中删除它。
这里处理的是唯一值。这只会删除找到的第一个项目。