我似乎没有在Redis中找到命令来实现以下目标:
设置密钥(如果密钥不存在),否则返回其值
有没有办法在一次交易中实现这一目标?
答案 0 :(得分:4)
一笔交易?当然。一个命令?不要这么认为。
在事务中,如果密钥不存在,请使用SETNX设置密钥,然后获取值。
MULTI
SETNX keyName value
GET keyName
EXEC
答案 1 :(得分:3)
(免责声明:我是Lua的那种人,接受的答案是完全有效的)一个服务器端的Lua脚本?当然。一个命令?不要这么认为;)
以下是使用EVAL
进行此操作的一种方法:
local v = redis.call('GET', KEYS[1])
if v then
return v
end
return redis.call('SET', KEYS[1], ARGV[1])