2017-04-07 25 views

回答

2

沒有內置的方法來做到這一點。您需要手動從列表中獲取項目並插入到集合中。如果你的列表很小,你可以使用下面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步,直到所有項目都已移動。