设置密钥(如果不存在),否则返回其值

时间:2017-03-29 22:07:48

标签: redis

我似乎没有在Redis中找到命令来实现以下目标:

设置密钥(如果密钥不存在),否则返回其值

有没有办法在一次交易中实现这一目标?

2 个答案:

答案 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])