2

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

我如何执行 atomic GET EXISTING OR SET AND RETURN THIS VALUE

4

2 回答 2

6

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

SETNX key value

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

于 2013-03-10T06:55:46.470 回答
1

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

第一的:

GET key

如果null,那么:

WATCH key
MULTI
    SET key value
EXEC

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

GET key
于 2013-03-10T03:12:07.650 回答