DECRBY
命令在 Redis 中是原子性的,这意味着在执行过程中不会被其他命令中断
然而,如果你需要确保在多个客户端之间对同一个键执行 DECRBY
操作的原子性,你可以使用以下方法:
DECRBY
操作,并将脚本发送给 Redis 服务器执行。这样可以确保在执行过程中不会被其他命令中断。这是一个示例 Lua 脚本:local key = KEYS[1]
local decrement = tonumber(ARGV[1])
local current_value = tonumber(redis.call("GET", key) or "0")
local new_value = current_value - decrement
if new_value < 0 then
return -1
else
redis.call("SET", key, new_value)
return new_value
end
要使用此脚本,你可以使用 EVAL
命令将其发送给 Redis 服务器:
EVAL <script> 1 your_key decrement_value
MULTI
、EXEC
、WATCH
等命令来实现。要使用事务确保 DECRBY
操作的原子性,你可以这样做:MULTI
DECRBY your_key decrement_value
EXEC
如果事务中的任何命令失败,整个事务将回滚,DECRBY
操作将不会执行。