sql >> Database >  >> NoSQL >> Redis

Redis, hoe verhoog je alle scores van een zset met ZINCRBY?

Daar is geen commando voor, ZINCRBY kan maar voor 1 lid tegelijk worden verhoogd. Dus als je dit op een atomaire en snelle manier wilt bereiken, moet je een Lua-script maken. Dat zou er ongeveer zo uit moeten zien (je krijgt eerst alle leden van de gesorteerde set en herhaalt ze dan en verhoogt de 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

En je kunt dit script naar Redis pushen met de EVAL commando.



  1. database converteren van mysql naar mongoDb

  2. Luister naar veranderingen in Redis?

  3. Hoe een waarde uit mongoDB op te halen, op basis van de sleutelnaam?

  4. Heroku-achtergrondtaken uitvoeren met slechts 1 web-dyno en 0 worker-dyno's