3
A
回答
2
看起来你需要一套或一套有序集合。
集合具有O(1)成员测试和强制唯一性。
1
1
检查列表以查看其中是否存在成员是O(n),对于大型列表而言这可能会相当昂贵,而且绝对不理想。也就是说,其他人似乎都在给你选择。我只是告诉你如何去做你要做的事情,并且假设你有这样做的充足理由。我会做在Python中,假设你有一个Redis的连接称为r
,一些列表称为some_list
和一些新的项目添加一个名为new_item
:
lst = r.lrange(list_name, -float('Inf'), float('Inf'))
if new_item not in lst:
r.rpush(list_name, new_item)
+1
对于获取整个列表来说,'LRANGE 0 -1'不会更好吗? –
4
我需要做的是相同的。 我想从列表中删除元素,然后再次添加它。如果元素不在列表中,Redis的将返回0,所以没有错误
lrem mylist 0 myitem
rpush mylist myitem
+0
这必须是选定的答案。 –
3
由于托马索Barbugli提到的,如果你只需要唯一值,你应该使用一个设置,而不是一个列表。 see REDIS documentation 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"
如果您要检查在设定值的存在,你可以使用SISMEMBER
redis> SADD myset "one"
(integer) 1
redis> SISMEMBER myset "one"
(integer) 1
redis> SISMEMBER myset "two"
(integer) 0
相关问题
- 1. SQLiteDatabase只有在不存在的情况下才会添加
- 2. 只有表单值存在的情况下才更新字段
- 3. 只有在SQLite中不存在的情况下才在SQLite中创建表
- 4. 只有在设置了值的情况下才添加属性
- 5. 只有在数组不存在的情况下才推送到阵列
- 6. 只有在表存在的情况下并且只有在列不存在的情况下表存在时,才在多个数据库中的表中添加列
- 7. 在不声明的情况下将对象添加到列表中
- 8. 只有在散列表条件下才将值添加到密钥
- 9. 在不使用for循环的情况下从值列表中添加列表框中的值
- 10. 如何在表中只有两列的情况下将行转换为列?
- 11. 从字符串列表中添加和删除项目,只有在项目不存在的情况下才会添加
- 12. 只有在不存在的情况下才能添加Java命名约定
- 13. 只有在关系存在的情况下才进行加载
- 14. 将列表添加到已存在的列表中C
- 15. 如何在不获取NULLREFERENCEEXCEPTION的情况下添加到列表中?
- 16. 在不重建表格的情况下将自动增量添加到列
- 17. 在不改变视图的情况下将列表添加到视图
- 18. 只有在不存在的情况下才加载jQuery时遇到问题
- 19. 如何在下列情况下将水平滚动条添加到HTML表格的特定列而不将表格添加到表中?
- 20. 只有在不存在仅使用SQL的情况下,向MySQL(而不是MariaDB)表添加列
- 21. 只有在存在的情况下才能清空sql表(不能删除)
- 22. 只有在不存在的情况下才打开Tkniter Toplevel
- 23. 如何在不重新加载整个列表的情况下将新行添加到android列表视图?
- 24. 只有在符合条件的情况下才将类添加到HTML标记
- 25. 如何在Redis中存储值列表?
- 26. 在没有外键的情况下在关系表中添加一列 - 休眠
- 27. 在不中断的情况下将对象添加到队列中
- 28. 只有在li元素尚未存在的情况下才添加li元素?
- 29. 只有在列表视图中才添加项目
- 30. 只有在存在ruby的情况下才能下载文件
你不能使用设置此的原因吗? (http://redis.io/commands#set) – Dogbert