我用redis的list结构来存储数据,现在想换list类型来set。有什么命令吗?
最佳答案
没有内置的方法来做到这一点。您需要手动从列表中获取项目并插入到集合中。如果你的列表很小,你可以使用下面的 lua 脚本:
repeat
local item = redis.call('lpop', KEYS[1])
if (item) then redis.call('sadd', KEYS[2], item) end
until not item
但是如果你的列表很大,脚本会阻塞Redis很长时间。您必须逐步将项目从列表移动到集合:
- 调用
LRANGE
从列表中获取一些项目(小批量) - 调用
SADD
插入这些项目来设置 - 调用
LTRIM
从列表中删除这些项目 - 转到第 1 步,直到所有项目都已移动。
关于list - 我可以更改redis数据结构列表来设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43271369/