我可以更改redis数据结构列表来设置

时间:2017-04-07 06:43:43

标签: list redis set

我使用redis列表结构来存储数据,但现在我想更改要设置的列表类型。对此有什么命令吗?

1 个答案:

答案 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。您必须逐项将项目从列表移动到设置:

  1. 致电LRANGE以从列表中获取一些项目(小批量)
  2. 调用SADD插入这些项目以设置
  3. 致电LTRIM以从列表中删除这些项目
  4. 转到第1步,直到所有项目都被移动。