sql >> Base de Datos >  >> NoSQL >> Redis

Redis, ¿cómo aumentar todas las puntuaciones de un zset con ZINCRBY?

No hay un comando para eso, ZINCRBY solo puede incrementar para 1 miembro a la vez. Entonces, si desea lograr esto de una manera atómica y rápida, debe hacer un script Lua. Que debería verse así (primero obtienes todos los miembros del conjunto ordenado y luego iteras a través de ellos e incrementas la puntuación):

local zsetMembers = redis.call('zrange', KEYS[1], '0', '-1') 
for k,member in pairs(zsetMembers) do 
  redis.call('zincrby', KEYS[1], 1, member) 
end

Y puede enviar este script a Redis con EVAL comando.