开发者

redis setIfAbsent返回null的问题及解决

开发者 https://www.devze.com 2022-12-08 12:37 出处:网络 作者: LaiDeJi_
目录起因原因解决起因 今天在写业务代码的时候,用到了StringRedisTemplate中redisTemplate.opsForValue().setIfAbsenjavascript编程客栈t()中并不是我期望的true或者false而是返回了null,起初我还以为是因为Return
目录
  • 起因
  • 原因
  • 解决

起因

今天在写业务代码的时候,用到了StringRedisTemplate中redisTemplate.opsForValue().setIfAbsenjavascript编程客栈t()中并不是我期望的true或者false而是返回了null,起初我还以为是因为Returns:null when used in pVJJoLQrBipeline / transaction.这个原因,但是我并没有在业务中使用到事务。

redis setIfAbsent返回null的问题及解决

原因

遂使用谷歌大法,才搜到原来这是因为Redisson的bug,网友给出的解决方案是去掉就好了,开发者_Elasticsearch但是不可能因为这个问题就不使用Redisson,看来又看但一个帖子,说这是redisson的bug。

看到这里,我就想到去看看github中是不是有相关的issue呢编程?

解决

redis setIfAbsent返回null的问题及解决

果然,我们可以看到有两个issue是关于setIfAbsent返回null的问题,让我们去看一下回复数多的那一条。

其中提到在#2811中修复

redis setIfAbsent返回null的问题及解决

也可以明确看到关于此bug的修复代码

redis setIfAbsent返回null的问题及解决

让我们一起看看这个BooleanNullSafeReplayConvertor是何方神圣,怎么解决的返回值为nulljs的bug.

redis setIfAbsent返回null的问题及解决

其实解决的方式也很简单暴力,就是把之前的obj == null return null改为了obj == null return false并且去掉了泛型。

redis setIfAbsent返回null的问题及解决

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

0

精彩评论

暂无评论...
验证码 换一张
取 消