この答えはあなたが期待するものではないかもしれません。しかし、Luaスクリプトは非常に明確な解決策であると言わざるを得ません。
-- 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
また、範囲が[0, 2^N - 1]
の場合 、次にBITFIELD
を使用できます 問題を解決するためのオーバーフロー制御を備えたコマンド。
BITFIELD key OVERFLOW FAIL INCRBY uN 0 increment
ただし、そうではないようです。