springboot redisTemplate.opsForValue().setIfAbsent返回null原理

一、版本

springboot版本:spring-boot-starter-data-redis 2.1.6
redisson版本:redisson-spring-boot-starter 3.11.5

二、场景

Boolean res = redisTemplate.opsForValue().setIfAbsent("key","value");

以上代码同一时间多次执行操作相同的key,除第一次返回true外,其余返回null,原因是redisson未对netty返回null的数据作处理,代码如下:

此代码在org.redisson.spring.data.connection.RedissonConnection
springboot redisTemplate.opsForValue().setIfAbsent返回null原理_第1张图片
此代码在io.netty.util.concurrent.DefaultPromise
springboot redisTemplate.opsForValue().setIfAbsent返回null原理_第2张图片
issues地址:https://github.com/redisson/redisson/issues/2811

你可能感兴趣的:(spring,boot,后端,java)