仅当存储的值较小/较大时才设置redis值

Eli*_*erg 5 c# redis stackexchange.redis

是否有一个内置命令可以设置存储键的值,仅当该值小于/大于某个参数时?

或者我唯一的解决方案是对缓存进行两次调用 - 一个用于检查值,另一个(可能的)用于存储新值?

谢谢

xag*_*gyg 1

没有一个简单的命令可以实现此目的,但您可以尝试使用不需要多个客户端命令的 Lua 脚本,例如:

local currentValue = tonumber(redis.call('GET', KEYS[1]))

if not currentValue or (ARGV[1] == 'smaller' and tonumber(ARGV[2]) < currentValue) or (ARGV[1] == 'larger' and tonumber(ARGV[2]) > currentValue) then
    redis.call('SET', KEYS[1], ARGV[2])
    return true
else
    return false
end
Run Code Online (Sandbox Code Playgroud)