Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 我可以将redis数据结构列表更改为设置吗_List_Redis_Set - Fatal编程技术网

List 我可以将redis数据结构列表更改为设置吗

List 我可以将redis数据结构列表更改为设置吗,list,redis,set,List,Redis,Set,我使用redis列表结构来存储数据,但现在我想将列表类型更改为set。是否有此命令?没有内置的方法。您需要手动从列表中获取项目并插入到集合中。如果列表较小,则可以使用以下lua脚本: repeat local item = redis.call('lpop', KEYS[1]) if (item) then redis.call('sadd', KEYS[2], item) end until not item 但是,如果您的列表非常大,脚本将长时间阻止Redis。必须递增地将

我使用redis列表结构来存储数据,但现在我想将列表类型更改为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,直到所有项目都已移动