日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

redis?setIfAbsent返回null的問題及解決_Redis

作者:LaiDeJi_ ? 更新時間: 2022-12-21 編程語言

起因

今天在寫業務代碼的時候,用到了StringRedisTemplate中redisTemplate.opsForValue().setIfAbsent()中并不是我期望的true或者false而是返回了null,起初我還以為是因為Returns:null when used in pipeline / transaction.這個原因,但是我并沒有在業務中使用到事務。

setIfAbsent

原因

遂使用谷歌大法,才搜到原來這是因為Redisson的bug,網友給出的解決方案是去掉就好了,但是不可能因為這個問題就不使用Redisson,看來又看但一個帖子,說這是redisson的bug。

看到這里,我就想到去看看github中是不是有相關的issue呢?

解決

issue

果然,我們可以看到有兩個issue是關于setIfAbsent返回null的問題,讓我們去看一下回復數多的那一條。

其中提到在#2811中修復

fixed

也可以明確看到關于此bug的修復代碼

method

讓我們一起看看這個BooleanNullSafeReplayConvertor是何方神圣,怎么解決的返回值為null的bug.

BooleanNullSafeReplayConvertor

其實解決的方式也很簡單暴力,就是把之前的obj == null return null改為了obj == null return false并且去掉了泛型。

BooleanReplayConvertor

原文鏈接:https://blog.csdn.net/LaiDeJi_/article/details/124992419

欄目分類
最近更新