Redis
 sql >> Database >  >> NoSQL >> Redis

Redis, come aumentare tutti i punteggi di uno zset con ZINCRBY?

Non esiste un comando per questo, ZINCRBY può aumentare solo per 1 membro alla volta. Quindi, se vuoi ottenere questo risultato in modo atomico e veloce, devi eseguire uno script Lua. Che dovrebbe assomigliare a questo (prima ottieni tutti i membri dell'insieme ordinato e poi scorreli e incrementi il ​​punteggio):

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 puoi inviare questo script a Redis con EVAL comando.