Redis
 sql >> Base de données >  >> NoSQL >> Redis

Redis, comment augmenter tous les scores d'un zset avec ZINCRBY ?

Il n'y a pas de commande pour cela, ZINCRBY ne peut s'incrémenter que pour 1 membre à la fois. Donc, si vous voulez accomplir cela de manière atomique et rapide, vous devez créer un script Lua. Ce qui devrait ressembler à ceci (vous obtenez d'abord tous les membres de l'ensemble trié, puis parcourez-les et incrémentez le score) :

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

Et vous pouvez pousser ce script vers Redis avec le EVAL commande.