sql >> Database >  >> NoSQL >> Redis

Redis INCRBY met limieten

Dit antwoord is misschien niet wat je verwacht. Maar ik moet zeggen dat Lua-scripting de glasheldere oplossing is.

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

Ook als het bereik [0, 2^N - 1] . is , dan kunt u BITFIELD . gebruiken commando met overloopregeling om het probleem op te lossen.

BITFIELD key OVERFLOW FAIL INCRBY uN 0 increment

Dat lijkt echter niet jouw geval.




  1. Catbox-redis geeft een verbroken verbinding weer op mijn hapijs-applicatie

  2. Redis actief-actieve replicatie

  3. Hoe te controleren of een arrayveld deel uitmaakt van een andere array in MongoDB?

  4. Wat is het nut van REDIS in ELK-stack?