我在redis中创建了如下键。
hmset mykey field1 1 field2 2
OK
//checked with command
hgetall mykey
1) "field1"
2) "1"
3) "field2"
4) "2"
结果还可以,并且工作正常。现在我想在单个命令中增加两个值,如
hincrby mykey field1 1 field2 1
有可能吗?
答案 0 :(得分:1)
否 - HINCRBY
不支持此类用途。如果您的动机是确保两个增量的原子性,请使用MULTI/EXEC
或服务器端Lua脚本(请参阅EVAL
命令)。
以下是如何解决原始问题以确保原子性:
MULTI
HSET mykey field1 1
HSET mykey field2 2
EXEC
对于第二个问题(在评论中 - “仅当设置大于”时),应使用这些参数1 <keyname> <value>
评估以下脚本:
local curr = tonumber(redis.call("GET", KEYS[1]))
if type(curr) == "number" and curr < tonumber(ARGV[1]) then
redis.call("SET", KEYS[1], ARGV[1])
return "OK"
end