redis?setIfAbsent返回null的問(wèn)題及解決
起因
今天在寫業(yè)務(wù)代碼的時(shí)候,用到了StringRedisTemplate中redisTemplate.opsForValue().setIfAbsent()中并不是我期望的true或者false而是返回了null,起初我還以為是因?yàn)镽eturns:null when used in pipeline / transaction.這個(gè)原因,但是我并沒(méi)有在業(yè)務(wù)中使用到事務(wù)。
原因
遂使用谷歌大法,才搜到原來(lái)這是因?yàn)镽edisson的bug,網(wǎng)友給出的解決方案是去掉就好了,但是不可能因?yàn)檫@個(gè)問(wèn)題就不使用Redisson,看來(lái)又看但一個(gè)帖子,說(shuō)這是redisson的bug。
看到這里,我就想到去看看github中是不是有相關(guān)的issue呢?
解決
果然,我們可以看到有兩個(gè)issue是關(guān)于setIfAbsent返回null的問(wèn)題,讓我們?nèi)?a target="_blank">看一下回復(fù)數(shù)多的那一條。
其中提到在#2811中修復(fù)
也可以明確看到關(guān)于此bug的修復(fù)代碼
讓我們一起看看這個(gè)BooleanNullSafeReplayConvertor是何方神圣,怎么解決的返回值為null的bug.
其實(shí)解決的方式也很簡(jiǎn)單暴力,就是把之前的obj == null return null改為了obj == null return false并且去掉了泛型。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Redis基本數(shù)據(jù)類型Zset有序集合常用操作
這篇文章主要為大家介紹了redis基本數(shù)據(jù)類型Zset有序集合常用操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05完美解決linux上啟動(dòng)redis后配置文件未生效的問(wèn)題
今天小編就為大家分享一篇完美解決linux上啟動(dòng)redis后配置文件未生效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Redis+PHP實(shí)現(xiàn)用戶消息推送每天最多通知2次的功能
在開(kāi)發(fā)應(yīng)用程序中,經(jīng)常需要向用戶推送消息通知,但是為了避免過(guò)多的打擾用戶,我們希望限制每天最多通知2次,本篇博文將介紹如何使用PHP和Redis實(shí)現(xiàn)這一功能,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-10-10基于Redis實(shí)現(xiàn)抽獎(jiǎng)功能及問(wèn)題小結(jié)
這篇文章主要介紹了基于Redis實(shí)現(xiàn)抽獎(jiǎng)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08