仅当Redis列表中的值尚不存在时才将其添加到Redis列表中?

boo*_*oom 5 redis

我正在尝试将值添加到列表中,但仅限于尚未添加的值.

是否有命令执行此操作或有没有方法来测试列表中是否存在值?

谢谢!

0xA*_*ffe 8

我需要做同样的事情.我想从列表中删除元素然后再添加它.如果元素不在列表中,redis将返回0,因此没有错误

lrem mylist 0 myitem
rpush mylist myitem 
Run Code Online (Sandbox Code Playgroud)

  • 很好的解决方案。但要小心将其用于 FIFO 队列,因为它将元素移动到列表的末尾 (2认同)

mjo*_*hko 6

正如Tommaso Barbugli提到的,​​如果仅需要唯一值,则应使用集合而不是列表。 请参阅REDIS文档SADD

redis>  SADD myset "Hello"
(integer) 1
redis>  SADD myset "World"
(integer) 1
redis>  SADD myset "World"
(integer) 0
redis>  SMEMBERS myset
1) "World"
2) "Hello"
Run Code Online (Sandbox Code Playgroud)

如果要检查集合中值的存在,可以使用SISMEMBER

redis>  SADD myset "one"
(integer) 1
redis>  SISMEMBER myset "one"
(integer) 1
redis>  SISMEMBER myset "two"
(integer) 0
Run Code Online (Sandbox Code Playgroud)


Tom*_*gli 2

看起来您需要一个集合或一个排序集合。

集合具有 O(1) 成员资格测试和强制唯一性。