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

标签 list redis set

我用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很长时间。您必须逐步将项目从列表移动到集合:

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

关于list - 我可以更改redis数据结构列表来设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43271369/

相关文章:

list - Word 2010 从多级列表中创建目录

list - 如何用惯用的方式编写这个函数?

redis - 打开Redis服务器时出错

autocomplete - 如何使用 Redis ZRANGEBYLEX 模拟自动完成搜索?

此用例的 Java 集合

Java,从 ArrayList 中删除元素

node.js - Redis "Promiseable"在 Node 中吗?

python - 如何创建一个字典来反向查找每个都有集合的列表项?

python - 从列表中获取唯一元组,Python

Python - 生成父/子字典结构