gpt4 book ai didi

lua - 具有限制的 Redis INCRBY

转载 作者:可可西里 更新时间:2023-11-01 11:11:41 24 4
gpt4 key购买 nike

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

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

当发出 INCRBYDECRBY 命令时(例如 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

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

关于lua - 具有限制的 Redis INCRBY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43632880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com