最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于Redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&錯(cuò)誤的解決方法

 更新時(shí)間:2023年08月29日 09:13:32   作者:Abstracted  
這篇文章主要介紹了關(guān)于Redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&的解決方法,出現(xiàn)該問(wèn)題的原因是, redis template向redis存放使用java對(duì)象序列化的值,序列化方式和string的一般方式不同,需要的朋友可以參考下

Redis的\xac\xed\x00\x05t\x00&錯(cuò)誤

筆者在使用redis存放鍵值對(duì)時(shí),發(fā)現(xiàn)存放的key和value多了\xac\xed\x00\x05t\x00&的前綴,筆者存放的是字符串,結(jié)果如下圖所示,出現(xiàn)非預(yù)期的前綴。

在這里插入圖片描述

出現(xiàn)該問(wèn)題的原因是, redis template 向redis存放使用java對(duì)象序列化的值,序列化方式和string的一般方式不同。

明明指定的另一個(gè)引文字符串作為key,但是實(shí)際存儲(chǔ)后卻多出來(lái)一串奇異字符串,這讓筆者好奇心頓時(shí)升起來(lái)了,決定debug調(diào)試一下

在這里插入圖片描述

從set()方法進(jìn)入一路對(duì)execute()的重載方法向下跟蹤,最終來(lái)到了一個(gè) T result = action.doInRedis(connToExpose); 代碼處

在這里插入圖片描述

step into 進(jìn)入doInRedis方法,

在這里插入圖片描述

可以看到在一開(kāi)始傳入的匿名對(duì)象就是這個(gè) ValueDeserializingRedisCallback 抽象類的一個(gè)匿名子類,并實(shí)現(xiàn)了set方法的最后一步,將數(shù)據(jù)存入redis。

來(lái)看看我的字符串key是怎么轉(zhuǎn)化成byte數(shù)組的。對(duì)rawKey方法向下追蹤…

獲取Key的序列化器,然后對(duì)我們的key進(jìn)行序列化

在這里插入圖片描述

在這里插入圖片描述

進(jìn)入 serialize(key) 方法,執(zhí)行了 JdkSerializationRedisSerializer 類中的serialize方法。

繼續(xù)向下跟蹤…

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

最終?。。。?,原來(lái)是使用了JDK自帶的 ObjectOutPutStream 將我們的String對(duì)象序列化成了byte[],

在這里插入圖片描述

來(lái)看看我們把byte數(shù)組轉(zhuǎn)回字符串key發(fā)現(xiàn)在我原本的key之前確實(shí)拼接了亂碼的字符串。

在這里插入圖片描述

RedisTemplate對(duì)Key的序列化了解了后,我們?cè)诳纯磳?duì)Value的序列化是怎么一回事?

在這里插入圖片描述

在這里插入圖片描述

最終結(jié)果是同樣的使用JDK自帶的對(duì)象輸出流對(duì)其進(jìn)行序列化。

在這里插入圖片描述

在Key和Value都序列化后,將數(shù)據(jù)存入Redis。

最終總結(jié)可以發(fā)現(xiàn)一切原因都是這個(gè)默認(rèn)的 JdkSerializationRedisSerializer JDKRedis序列化器的序列化方式不能讓人接受。

知道了問(wèn)題所在,這個(gè)問(wèn)題就已經(jīng)解決了一半了。

我們能不能不使用這個(gè)默認(rèn)的JDKRedis序列化器,自己實(shí)現(xiàn)一個(gè)或者換一個(gè)呢?

很幸運(yùn),Spring已經(jīng)為我們提供了許多類型的序列化器了

在這里插入圖片描述

一般我們常用的序列化器是 Jackson2JsonRedisSerializer 和 StringRedisSerializer 這兩種。

看名字就知道Jackson2JsonRedisSerializer是將對(duì)象序列化成JSON形式的序列化器了。

  • Jackson2JsonRedisSerializer :常用來(lái)直接序列化Value對(duì)象為JSON字符串。內(nèi)部使用ObjectMapper
  • StringRedisSerializer :常用來(lái)序列化Key,也可以用來(lái)序列化Value。

于是乎我們對(duì)RedisTemplate進(jìn)行配置:

/**
 * 如果key和value都使用的StringRedisSerializer序列化器,則推薦使用StringRedisTemplate
 *
 * 配置Redis的Key和Value的序列化器
 * @param redisTemplate 從容器中獲取RedisTemplate
 * @return 修改后的RedisTemple
 */
@Bean
public RedisTemplate<Object, Object> redisStringTemplate(RedisTemplate<Object, Object> redisTemplate) {
    StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
    redisTemplate.setKeySerializer(stringRedisSerializer);
    // 如果手動(dòng)將Value轉(zhuǎn)換成了JSON,就不要再用JSON序列化器了。
    // redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));
    redisTemplate.setValueSerializer(stringRedisSerializer);
    return redisTemplate;
}

查驗(yàn)結(jié)果:key和value的序列化和反序列化都正常了。

到此這篇關(guān)于關(guān)于Redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&amp;錯(cuò)誤的解決方法的文章就介紹到這了,更多相關(guān)Redis鍵值xac報(bào)錯(cuò)解決方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis開(kāi)啟spring事務(wù)代碼解析

    mybatis開(kāi)啟spring事務(wù)代碼解析

    這篇文章主要介紹了mybatis開(kāi)啟spring事務(wù)代碼解析,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • 使用javaweb項(xiàng)目對(duì)數(shù)據(jù)庫(kù)增、刪、改、查操作的實(shí)現(xiàn)方法

    使用javaweb項(xiàng)目對(duì)數(shù)據(jù)庫(kù)增、刪、改、查操作的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于使用javaweb項(xiàng)目對(duì)數(shù)據(jù)庫(kù)增、刪、改、查操作的實(shí)現(xiàn)方法,avaWeb是指使用Java語(yǔ)言進(jìn)行Web應(yīng)用程序開(kāi)發(fā)的技術(shù),可以利用Java編寫(xiě)一些動(dòng)態(tài)網(wǎng)頁(yè)、交互式網(wǎng)頁(yè)、企業(yè)級(jí)應(yīng)用程序等,需要的朋友可以參考下
    2023-07-07
  • java 中HashMap、HashSet、TreeMap、TreeSet判斷元素相同的幾種方法比較

    java 中HashMap、HashSet、TreeMap、TreeSet判斷元素相同的幾種方法比較

    這篇文章主要介紹了從源碼的角度淺析HashMap、TreeMap元素的存儲(chǔ)和獲取元素的邏輯;從Map與Set之間的關(guān)系淺析常用的Set中元素的存儲(chǔ)和判斷是否重復(fù)的邏輯,需要的朋友可以參考下
    2017-01-01
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(9)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(9)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07
  • SpringBoot中配置文件及切換方式

    SpringBoot中配置文件及切換方式

    這篇文章主要介紹了SpringBoot中配置文件及切換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 跨域解決方案Jsonp原理解析

    跨域解決方案Jsonp原理解析

    這篇文章主要介紹了跨域解決方案Jsonp原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 深入了解java-jwt生成與校驗(yàn)

    深入了解java-jwt生成與校驗(yàn)

    這篇文章主要介紹了深入了解java-jwt生成與校驗(yàn),Json web token(JWT)是為了網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開(kāi)發(fā)標(biāo)準(zhǔn)(RFC 7519),該token被設(shè)計(jì)為緊湊且安全的,特別適用于分布式站點(diǎn)的單點(diǎn)登陸(SSO)場(chǎng)景。,需要的朋友可以參考下
    2019-06-06
  • spring boot中xalan引入報(bào)錯(cuò)系統(tǒng)找不到指定的文件原因分析

    spring boot中xalan引入報(bào)錯(cuò)系統(tǒng)找不到指定的文件原因分析

    這篇文章主要介紹了spring boot中xalan引入報(bào)錯(cuò)系統(tǒng)找不到指定的文件,主要原因是內(nèi)嵌的tomcat9.0.36,本文給大家分享最新解決方法,需要的朋友可以參考下
    2023-08-08
  • springboot+thymeleaf+shiro標(biāo)簽的實(shí)例

    springboot+thymeleaf+shiro標(biāo)簽的實(shí)例

    這篇文章主要介紹了springboot+thymeleaf+shiro標(biāo)簽的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java中catalina.home與catalina.base區(qū)別點(diǎn)整理

    java中catalina.home與catalina.base區(qū)別點(diǎn)整理

    在本篇文章里小編給大家整理的是關(guān)于java項(xiàng)目中catalina.home與catalina.base區(qū)別點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2020-02-02

最新評(píng)論

临汾市| 威海市| 吴旗县| 聊城市| 郑州市| 浦县| 武强县| 北安市| 秦安县| 西乌珠穆沁旗| 哈巴河县| 永兴县| 抚顺市| 建昌县| 洛阳市| 博白县| 光山县| 旬邑县| 平罗县| 治多县| 开远市| 板桥市| 武强县| 拉萨市| 崇礼县| 云南省| 普宁市| 光山县| 刚察县| 扶绥县| 灵宝市| 巴中市| 平乐县| 来宾市| 疏勒县| 芦山县| 米脂县| 平舆县| 舞钢市| 青神县| 鄯善县|