我使用redis列表结构来存储数据,但现在我想更改要设置的列表类型。对此有什么命令吗?
答案 0 :(得分:3)
没有内置的方法来做到这一点。您需要从列表中手动获取项目并插入到集合中。如果您的列表很小,则可以使用以下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
以从列表中删除这些项目