用了Redisson的Spring Boot Starter搞的我都想重寫個(gè)
在對接一個(gè)小程序推送的框架時(shí),需要將 access_token 存儲到 Redis 中,框架中提供了存儲邏輯,只需要將 RedissonClient 對象傳進(jìn)去即可??蚣軆?nèi)部在用 Redisson 的 RBucket 進(jìn)行數(shù)據(jù)存儲時(shí)報(bào)錯(cuò)了,原因是 fst 里面的一個(gè)方法找不到了,這一看就是版本的問題。
Redisson 中依賴的 fst 是 2.57,這個(gè)版本是沒問題,主要是目前項(xiàng)目的依賴版本降低了,原因是 dubbo 中依賴了低版本,影響了原有的版本。
解決方案很簡單,強(qiáng)制聲明要使用的版本即可,今天主要不是講這個(gè)如何解決的,是想說下另一些使用不太方便的點(diǎn)。
默認(rèn)編碼
根據(jù)官方文檔的說明,默認(rèn)編碼是 jackson, 從我們上面的錯(cuò)誤來看,是用了 fst 編碼才報(bào)的錯(cuò)。而項(xiàng)目中沒有單獨(dú)設(shè)置過編碼方式,所以這里文檔是不是沒及時(shí)更新?

在構(gòu)造 Config 對象里面看到了默認(rèn)的編碼設(shè)置:

配置編碼
如果你想換一種編碼方式,本來想著用了 redisson-spring-boot-starter,應(yīng)該直接可以通過配置指定對應(yīng)的編碼方式。
翻翻源碼一看并沒有這些配置信息,看文檔得知,你可以自定義一個(gè) yml 文件來配置相關(guān)信息,然后指定這個(gè) yml 文件的路徑。
spring:
redis:
redisson:
config: classpath:redisson.yml
在 Starter 包中自動裝配的邏輯如下,就是根據(jù)配置路徑加載整個(gè)文件的內(nèi)容,然后轉(zhuǎn)換成 Config 對象。

所以如果我要替換默認(rèn)的編碼方式,就需要自定義一個(gè) redisson.yml 文件進(jìn)行配置,說實(shí)話不方便,最方便的還是直接配置,比如
spring.redis.redisson.codec=org.redisson.codec.JsonJacksonCodec
另一點(diǎn)在于,如果需要自定義文件來進(jìn)行配置,對于多環(huán)境的區(qū)分不是很好,需要每個(gè)環(huán)境對應(yīng)一個(gè)配置文件,然后在配置中心中指定使用哪個(gè)自定義的文件。
spring.redis.redisson.config: classpath:redisson-beta.yml
或者
spring.redis.redisson.config: classpath:redisson-product.yml
然后 redisson.yml 這里面的文件內(nèi)容不能放到配置中心里去,加載不到。如果內(nèi)容要放進(jìn)去,需要改動加載配置的代碼,就不能通過 classpath 去讀取了,需要從配置中心去讀取。
如果實(shí)在覺得不好用就重寫個(gè)吧,也挺快的,哈哈!
關(guān)于作者:尹吉?dú)g,簡單的技術(shù)愛好者,《Spring Cloud 微服務(wù)-全棧技術(shù)與案例解析》, 《Spring Cloud 微服務(wù) 入門 實(shí)戰(zhàn)與進(jìn)階》作者, 公眾號猿天地發(fā)起人。
我整理了一份很全的學(xué)習(xí)資料,感興趣的可以微信搜索「猿天地」,回復(fù)關(guān)鍵字 「學(xué)習(xí)資料」獲取我整理好了的 Spring Cloud,Spring Cloud Alibaba,Sharding-JDBC 分庫分表,任務(wù)調(diào)度框架 XXL-JOB,MongoDB,爬蟲等相關(guān)資料。
后臺回復(fù)?學(xué)習(xí)資料?領(lǐng)取學(xué)習(xí)視頻
如有收獲,點(diǎn)個(gè)在看,誠摯感謝
