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

Redis INCRBY z ograniczeniami

Ta odpowiedź może nie być taka, jakiej oczekujesz. Muszę jednak powiedzieć, że skrypty Lua to krystalicznie czyste rozwiązanie.

-- range-incrby.lua key , increment
local key = KEYS[1]
local increment = ARGV[1]
local cnt = redis.call('get', key) or 0
cnt = cnt + increment
if (cnt >= 0 and cnt <= 100) then
    redis.call('set', key, cnt)
    return cnt
end

Ponadto, jeśli zakres to [0, 2^N - 1] , możesz użyć BITFIELD polecenie z kontrolą przepełnienia, aby rozwiązać problem.

BITFIELD key OVERFLOW FAIL INCRBY uN 0 increment

Jednak wydaje się, że to nie twój przypadek.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Resque, Resque Server, na RedisToGo z Heroku

  2. Jak wznowić hash sloty danego węzła w klastrze redis w przypadku poważnej awarii?

  3. Redis, wygaśnięcie sesji i wyszukiwanie wsteczne

  4. Najlepszy sposób na przechowywanie kluczy redis

  5. Kopie zapasowe AOF i RDB w redis