ReactiveRedisTemplate opsForHash不会覆盖该值。
redisTemplate.opsForHash().put("NAMESPACE", id, personInfo.toByteArray()).
map(resBoolean -> {
return resBoolean;
}).onErrorResume(e -> {
return Mono.just(false);
});
仅当我第一次使用新键调用上述方法时,该值才存储在Redis中。当我第二次使用相同的值或不同的值调用相同的方法时,我得到了假。redis put不会覆盖相同密钥的值吗?是否因为为键存储的每个值都是不可变的?
如果删除缓存值,则可以再次设置该值,这很明显。请帮助回答。
最佳答案
不幸的是,ReactiveRedisTemplate的文档没有描述返回的Boolean
字段的含义。
我们可以依靠official Redis documentation:
ReactiveRedisTemplate最有可能将正整数转换为true,将0转换为false。因此,返回的false值仅意味着该字段不会被新添加,而只是被覆盖,因此您的代码可能工作正常。
在try.redis.io上尝试以下示例以查看实际效果:
> HSET myhash field1 "Hello"
(integer) 1
> HSET myhash field1 "Hello2"
(integer) 0
> HGET myhash field1
"Hello2"
关于java - ReactiveRedisTemplate opsForHash放置不会覆盖该值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63460208/