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

and*_*231 0 redis

我似乎在Redis中找不到找到以下命令的命令:

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

有什么方法可以在一次交易中实现这一目标吗?

Tri*_*ych 5

一笔交易?当然。一个命令?不要这样

在事务中,使用SETNX设置密钥(如果它不存在),然后获取值。

MULTI
SETNX keyName value
GET keyName
EXEC
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用的是 redis 2.6 或更高版本,您可以使用 set 命令来完成此操作:“SET keyName value NX EX timeout_seconds”。请参阅 https://redis.io/commands/set (2认同)

Ita*_*ber 5

(免责声明:我是一个 Lua 类型的人,接受的答案是完全有效的)一个服务器端 Lua 脚本?当然。一个命令?不要这么认为;)

这是一种方法EVAL

local v = redis.call('GET', KEYS[1])
if v then
  return v
end
return redis.call('SET', KEYS[1], ARGV[1])
Run Code Online (Sandbox Code Playgroud)