Redis得到还是创造?

时间:2013-03-10 03:02:35

标签: redis

我想将Redis用作随机种子缓存。当我想要一个键的值时,如果还没有,我将生成一个随机字符串并存储它以供以后重用。

如何执行原子GET EXISTING OR SET AND RETURN THIS VALUE

2 个答案:

答案 0 :(得分:5)

您可以使用SETNX尝试先设置值。然后GET将为您提供现有值或您尝试设置的新值。

SETNX key value

如果您想知道这是否是新值,可能会返回0或1

答案 1 :(得分:1)

似乎没有一个命令可以做到这一点。使用MULTIWATCH

首先:

GET key

如果null,则:

WATCH key
MULTI
    SET key value
EXEC

如果[null](表示交易已中止),则密钥是在此期间创建的,现在必须存在:

GET key