Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Redis, wie kann man mit ZINCRBY alle Scores eines zset erhöhen?

Dafür gibt es keinen Befehl, ZINCRBY kann jeweils nur für 1 Mitglied inkrementieren. Wenn Sie dies also auf atomare und schnelle Weise erreichen möchten, müssen Sie ein Lua-Skript erstellen. Das sollte etwa so aussehen (zuerst erhalten Sie alle Mitglieder der sortierten Menge und iterieren dann durch sie und erhöhen die Punktzahl):

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

Und Sie können dieses Skript mit EVAL nach Redis pushen Befehl.