欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

Redis的\xac\xed\x00\x05t\x00&錯誤

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

在這里插入圖片描述

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

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

在這里插入圖片描述

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

在這里插入圖片描述

step into 進入doInRedis方法,

在這里插入圖片描述

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

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

獲取Key的序列化器,然后對我們的key進行序列化

在這里插入圖片描述

在這里插入圖片描述

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

繼續(xù)向下跟蹤…

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

最終!?。。?,原來是使用了JDK自帶的 ObjectOutPutStream 將我們的String對象序列化成了byte[],

在這里插入圖片描述

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

在這里插入圖片描述

RedisTemplate對Key的序列化了解了后,我們在看看對Value的序列化是怎么一回事?

在這里插入圖片描述

在這里插入圖片描述

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

在這里插入圖片描述

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

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

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

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

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

在這里插入圖片描述

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

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

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

于是乎我們對RedisTemplate進行配置:

/**
 * 如果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);
    // 如果手動將Value轉(zhuǎn)換成了JSON,就不要再用JSON序列化器了。
    // redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));
    redisTemplate.setValueSerializer(stringRedisSerializer);
    return redisTemplate;
}

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

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

相關(guān)文章

  • SMBMS超市訂單管理系統(tǒng)的網(wǎng)站源碼

    SMBMS超市訂單管理系統(tǒng)的網(wǎng)站源碼

    這篇文章主要介紹了SMBMS超市訂單管理系統(tǒng),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05
  • JAVA設(shè)計模式零基礎(chǔ)解析之單例模式的八種方式

    JAVA設(shè)計模式零基礎(chǔ)解析之單例模式的八種方式

    設(shè)計模式(Design pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗的總結(jié)。使用設(shè)計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性
    2021-10-10
  • MultipartFile文件判斷是否存在的操作

    MultipartFile文件判斷是否存在的操作

    這篇文章主要介紹了MultipartFile文件判斷是否存在的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Redis分布式鎖實現(xiàn)方式及超時問題解決

    Redis分布式鎖實現(xiàn)方式及超時問題解決

    這篇文章主要介紹了Redis分布式鎖實現(xiàn)方式及超時問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • 基于apache poi根據(jù)模板導(dǎo)出excel的實現(xiàn)方法

    基于apache poi根據(jù)模板導(dǎo)出excel的實現(xiàn)方法

    下面小編就為大家?guī)硪黄赼pache poi根據(jù)模板導(dǎo)出excel的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • IntelliJ?IDEA2022.3?springboot?熱部署含靜態(tài)文件(最新推薦)

    IntelliJ?IDEA2022.3?springboot?熱部署含靜態(tài)文件(最新推薦)

    這篇文章主要介紹了IntelliJ?IDEA2022.3?springboot?熱部署含靜態(tài)文件,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • Java之如何讀取Excel獲取真實行數(shù)

    Java之如何讀取Excel獲取真實行數(shù)

    這篇文章主要介紹了Java之如何讀取Excel獲取真實行數(shù)問題,具有很好的參考價值,希望對大家有所幫助。
    2023-06-06
  • SpringBoot整合阿里云短信服務(wù)的方法

    SpringBoot整合阿里云短信服務(wù)的方法

    在實際項目中經(jīng)常有發(fā)送短信的功能,今天進說一下SpringBoot整合阿里云短信服務(wù)的相關(guān)知識,新建短信微服務(wù),編寫發(fā)送短信接口的方法文中給大家介紹的很詳細,需要的朋友參考下吧
    2021-10-10
  • SpringSecurity+jwt+captcha登錄認證授權(quán)流程總結(jié)

    SpringSecurity+jwt+captcha登錄認證授權(quán)流程總結(jié)

    本文介紹了SpringSecurity、JWT和驗證碼在Spring Boot 3.2.0中的應(yīng)用,包括登錄認證和授權(quán)流程的詳細步驟,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • log4j2 項目日志組件的實例代碼

    log4j2 項目日志組件的實例代碼

    下面小編就為大家分享一篇log4j2 項目日志組件的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12

最新評論