Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Redis INCRBY com limites


Esta resposta pode não ser o que você espera. Mas devo dizer que o script Lua é a solução cristalina.
-- 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

Além disso, se o intervalo for [0, 2^N - 1] , então você pode usar BITFIELD comando com controle de estouro para resolver o problema.
BITFIELD key OVERFLOW FAIL INCRBY uN 0 increment

No entanto, esse não parece ser o seu caso.