sql >> Databáze >  >> NoSQL >> Redis

Redis INCRBY s limity

Tato odpověď nemusí být to, co očekáváte. Ale musím říct, že skriptování Lua je křišťálově čisté řešení.

-- 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

Také, pokud je rozsah [0, 2^N - 1] , pak můžete použít BITFIELD příkaz s ovládáním přetečení k vyřešení problému.

BITFIELD key OVERFLOW FAIL INCRBY uN 0 increment

Zdá se však, že to není váš případ.




  1. Jak mohu chránit svou cestu /sidekiq heslem (tj. vyžadovat ověření pro nástroj Sidekiq::Web)?

  2. MongoDB:find and findOne s filtrováním vnořených polí

  3. MongoDB $nebo dotaz

  4. Chyba:Připojení Redis k 127.0.0.1:6379 selhalo - připojte ECONNREFUSED 127.0.0.1:6379