HSET如果键存在

6
1个回答

10

使用事务在客户端上实现它非常容易。

WATCH hkey
isKeyExists = EXISTS hkey
if isKeyExists
  MULTI
  HSET hkey field value
  EXEC
else
  UNWATCH

当 WATCH 后移除 hkey 时,事务将失败。

您也可以使用在 Redis 2.6 中引入的脚本。


如果我从redis-cli中触发它,它什么也不做。 redis 127.0.0.1:6379> HGETALL hkey 1)“v” 2)“r” redis 127.0.0.1:6379> WATCH hkey isKeyExists = EXISTS hkey if isKeyExists MULTI HSET hkey field value EXEC else UNWATCH OK redis 127.0.0.1:6379> HGETALL hkey 1)“v” 2)“r” - Vivek Goel
抱歉没有解释清楚。我写的是伪代码,用于Redis文档中。更多信息请参见:http://redis.io/topics/transactions - luin
2
如果在“WATCH”命令之后hkey的内容发生了变化,“HSET”命令将无法执行。这不是“如果键存在则HSET”。 - llinvokerl
我认为这个SO提供了一个正确的答案。https://dev59.com/zbDla4cB1Zd3GeqP5D2Q - Mingjiang Shi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接