Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Redis, jak zwiększyć wszystkie wyniki zset za pomocą ZINCRBY?

Nie ma do tego polecenia, ZINCRBY może inkrementować tylko dla 1 członka na raz. Więc jeśli chcesz to osiągnąć w sposób atomowy i szybki, musisz zrobić skrypt Lua. Który powinien wyglądać mniej więcej tak (najpierw dostajesz wszystkich członków posortowanego zestawu, a następnie przechodzisz przez nich i zwiększasz wynik):

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

I możesz przesłać ten skrypt do Redis za pomocą EVAL polecenie.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak debugować polecenie błędu OOM niedozwolone, gdy używana pamięć> „maxmemory” w Redis?

  2. Redis — co, dlaczego i jak używać Redis jako podstawowej bazy danych

  3. Błąd 99 podczas łączenia z hostem lokalnym:6379. Nie można przypisać żądanego adresu

  4. Jak ponownie wykorzystać połączenie redis w socket.io?

  5. Jak sprawdzić zero / null w Redis' Lua cjson?