Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ReactiveEdistemplate opsForHash put不';不要覆盖该值_Java_Redis_Reactive Programming_Spring Webflux_Spring Data Redis - Fatal编程技术网

Java ReactiveEdistemplate opsForHash put不';不要覆盖该值

Java ReactiveEdistemplate opsForHash put不';不要覆盖该值,java,redis,reactive-programming,spring-webflux,spring-data-redis,Java,Redis,Reactive Programming,Spring Webflux,Spring Data Redis,ReactiveRedisTemplate opsForHash put不会覆盖该值 redisTemplate.opsForHash().put("NAMESPACE", id, personInfo.toByteArray()). map(resBoolean -> { return resBoolean;

ReactiveRedisTemplate opsForHash put不会覆盖该值

redisTemplate.opsForHash().put("NAMESPACE", id, personInfo.toByteArray()).
                    map(resBoolean -> {                     
                        return resBoolean;
                    }).onErrorResume(e -> {
                        return Mono.just(false);
                    });
只有当我第一次用一个新键调用上述方法时,该值才会存储在Redis中。当我用相同的值或不同的值第二次调用相同的方法时,返回false

redis put是否不覆盖同一密钥的值?是不是因为为键存储的每个值都是不可变的


如果我删除缓存值,我可以再次设置该值,这是显而易见的。请帮助回答。

不幸的是,ReactiveRedisTemplate的文档没有描述返回的
布尔值
字段的含义

我们可以依靠:

返回值整数答复:

已添加的字段数

最可能的情况是,ReactiveEdisTemplate将正整数转换为true,将0转换为false。因此,返回的false值只是意味着该字段不是新添加的,而是被覆盖的,因此您的代码可能工作正常

请尝试此示例以查看此操作:

> HSET myhash field1 "Hello"
(integer) 1
> HSET myhash field1 "Hello2"
(integer) 0
> HGET myhash field1
"Hello2"

不幸的是,ReactiveRedisTemplate的文档并没有描述返回的
布尔值
字段的含义

我们可以依靠:

返回值整数答复:

已添加的字段数

最可能的情况是,ReactiveEdisTemplate将正整数转换为true,将0转换为false。因此,返回的false值只是意味着该字段不是新添加的,而是被覆盖的,因此您的代码可能工作正常

请尝试此示例以查看此操作:

> HSET myhash field1 "Hello"
(integer) 1
> HSET myhash field1 "Hello2"
(integer) 0
> HGET myhash field1
"Hello2"

问题是,同一密钥的新值没有被覆盖。作为一种解决方法,我将从redis中删除键值,并使用同一个键的新值重新添加它。您认为它在哪里不会被覆盖?你直接研究Redis吗?我做了一个
redisTemplate.opsForHash().get(“NAMESPACE”,deviceId)问题是,同一密钥的新值没有被覆盖。作为一种解决方法,我将从redis中删除键值,并使用同一个键的新值重新添加它。您认为它在哪里不会被覆盖?你直接研究Redis吗?我做了一个
redisTemplate.opsForHash().get(“NAMESPACE”,deviceId)