Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Redis, como aumentar todas as pontuações de um zset com ZINCRBY?


Não há comando para isso, ZINCRBY só pode incrementar para 1 membro por vez. Então, se você quiser fazer isso de maneira atômica e rápida, você precisa fazer um script Lua. Que deve ser algo assim (primeiro você obtém todos os membros do conjunto classificado e, em seguida, itera por eles e incrementa a pontuação):
local zsetMembers = redis.call('zrange', KEYS[1], '0', '-1') 
for k,member in pairs(zsetMembers) do 
  redis.call('zincrby', KEYS[1], 1, member) 
end

E você pode enviar esse script para o Redis com o EVAL comando.