可以看到圖中 RDM Redis Console 之下,當(dāng)我們獲取 key 為 test 的value的值,打印出來是出現(xiàn)
了兩個(gè)雙引號 , 這是不正確的缘回。
如果是初學(xué)者或者不是大神, 之前沒有發(fā)現(xiàn)這個(gè)問題, 盲目的看別人的教程(搬磚),就不知道
是如何, 圖一是我從某網(wǎng)友分享的 redis 入門代碼里截圖作為例子的铝噩。
原因: 可以看到紅色劃線部分, 在寫入數(shù)據(jù)庫的時(shí)候,value都需要經(jīng)過序列化凉唐,當(dāng)我們用 jack
(JSON工具)去把數(shù)據(jù) JSON化的時(shí)候并傳入數(shù)據(jù)庫都會(huì)導(dǎo)致這種情況( JSON格式: { "key": "value"
} )。JSON已為數(shù)據(jù)添加雙引號了,再用redis就會(huì)出現(xiàn) 兩個(gè)雙引號
圖一:
如何解決呢:
spring data Redis 官網(wǎng)里邊就有答案开皿。
地址如下, 然后頁面滑動(dòng)到如 圖二所示.
具體意思大家看自己翻譯下锡足。 我就簡介的說:
主要意思: 該 序列化API 主要提供了 StringRedisSerializer 和 JDKSer....這兩個(gè) 序列化類。
另外要想實(shí)現(xiàn) json的序列化則使用: Jackson...或者 Gener...這兩個(gè)序列化類蹬敲,便可把數(shù)據(jù)序列化
成 JSON 數(shù)據(jù)暇昂。
看到這你就明白了: 代碼里邊用的 Jackson...這個(gè)類才導(dǎo)致的問題,那么切換成別的序列化類不就OK了伴嗡。
我們看到它自己提供了 StringRedisSerializer 這個(gè)類急波。顧名思義: 序列化為 字符串類型。
更改下代碼即可,如下:
template.setKeySerializer(new StringRedisSerializer());
直接new一個(gè)就OJBK了瘪校。
鏈接地址:
https://docs.spring.io/spring-data/redis/docs/2.0.3.RELEASE/reference/html/
圖二:
最后,文章受限于本人技術(shù)能力澄暮,如有問題,歡迎提出阱扬,不喜歡也可以噴我.