Redis INCRBY有限制

我想知道是否有一种方法可以通过我的应用程序进行一次往返操作来在Redis中执行此操作:

对于给定的键K,其可能的值V是范围内的任何整数[A, B]。基本上,它具有上下边界。

当发出INCRBYor DECRBY命令时(例如INCRBY key 10), 当结果值没有超出范围 执行。

我需要这个操作是原子的,并且我想知道是否有一种方法可以避免为此编写Lua脚本。

谢谢。

回答:

这个答案可能不是您所期望的。但是我不得不说,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

但是,这似乎不是您的情况。

以上是 Redis INCRBY有限制 的全部内容, 来源链接: utcz.com/qa/425332.html

回到顶部