RedisTemplate 序列化成功,反序列化失敗List, Set, Map失敗

RedisTemplate 序列化成功,反序列化失敗List, Set, Map失敗

  • 異常信息
  • RedisTemplate配置
  • 異常原因
  • 錯誤代碼示例
  • 解決方法

序列化成功,反序列化失敗

異常信息

Caused by: com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve type id '6' as a subtype of `java.lang.Object`: no such class foundat [Source: (byte[])"[6,7,1,2,3,4,5]"; line: 1, column: 4]
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Unexpected token (START_OBJECT), expected VALUE_STRING: need String, Number of Boolean value that contains type id (for subtype of java.lang.Object)at [Source: (byte[])"[

RedisTemplate配置

首先確定RedisTemplate序列化器設置正確

@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);//String的序列化方式// 使用GenericJackson2JsonRedisSerializer 替換默認序列化(默認采用的是JDK序列化)//序列號key valueredisTemplate.setKeySerializer(RedisSerializer.string());redisTemplate.setValueSerializer(RedisSerializer.json());redisTemplate.setHashKeySerializer(RedisSerializer.string());redisTemplate.setHashValueSerializer(RedisSerializer.json());redisTemplate.afterPropertiesSet();return redisTemplate;}

異常原因

使用了List.of(), Set.of(), Map.of()等方法導致序列化時沒有類型
使用stream api 的 toList 方法

錯誤代碼示例

 Map<String, List<Integer>> map = new HashMap<>();Map<Integer, Integer> map2 = Map.of(1, 2, 3, 4);List<Integer> list = List.of(1, 2, 34, 54, 5);ArrayList<Integer> arrayList = new ArrayList<>(list);map.put("1", list);redisTemplate.opsForHash().putAll("test:1", map);redisTemplate.opsForHash().put("test:2", "1", arrayList);Set<Integer> nums = Set.of(1, 2, 3, 4, 5, 6, 7);redisTemplate.opsForValue().set("test:3", nums);

這是錯誤的序列化,會導致反序列化失敗
在這里插入圖片描述

正確的序列化的帶有java類型的
在這里插入圖片描述

解決方法

不使用List.of(), Set.of(), Map.of() 等靜態方法
使用.collect(Collectors.toList())代替stream().toList()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713142.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713142.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713142.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

小程序事件處理

事件處理 一個應用僅僅只有界面展示是不夠的&#xff0c;還需要和用戶做交互&#xff0c;例如&#xff1a;響應用戶的點擊、獲取用戶輸入的值等等&#xff0c;在小程序里邊&#xff0c;我們就通過編寫 JS 腳本文件來處理用戶的操作 1. 事件綁定和事件對象 小程序中綁定事件與…

React之組件定義和事件處理

一、組件的分類 在react中&#xff0c;組件分為函數組件和class組件&#xff0c;也就是無狀態組件和有狀態組件。 * 更過時候我們應該區別使用無狀態組件&#xff0c;因為如果有狀態組件會觸發生命周期所對應的一些函數 * 一旦觸發他生命周期的函數&#xff0c;它就會影響當前項…

如何設置從小程序跳轉到其它小程序

?有的商家有多個小程序&#xff0c;希望能夠通過一個小程序鏈接到所有其它小程序&#xff0c;用戶可以通過點擊跳轉鏈接實現從一個小程序跳轉到另一個小程序。要怎么才能實現這樣的跳轉呢。下面具體介紹。 1. 設置跳轉。在小程序管理員后臺->分類管理&#xff0c;添加一個…

ssm個人學習01

Spring配置文件: spring環境的搭建: 1:導入對應的spring坐標 也就是依賴 2:編寫controller, service, dao相關的代碼 3:創建配置文件(在resource下面配置文件) 例如:applicationContext.xml <bean id "" class ""> <property name "&…

Node.js 中 fs 模塊文件操作的應用教程

Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環境&#xff0c;它可以讓 JavaScript 代碼在服務器端運行。在 Node.js 中&#xff0c;fs 模塊是用來處理文件系統操作的模塊。通過 fs 模塊&#xff0c;我們可以進行文件的讀取、寫入、刪除等操作。本教程將介紹如何在 No…

工作電壓范圍寬的國產音頻限幅器D2761用于藍牙音箱,輸出噪聲最大僅-90dBV

近年來隨著相關技術的不斷提升&#xff0c;音箱也逐漸從傳統的音箱向智能音箱、無線音箱升級。同時在消費升級的背景下&#xff0c;智能音箱成為人們提升生活品質的方式之一。智能音箱是智能化和語音交互技術的產物&#xff0c;具有點歌、購物、控制智能家居設備等功能&#xf…

python水表識別圖像識別深度學習 CNN

python水表識別&#xff0c;圖像識別深度學習 CNN&#xff0c;Opencv,Keras 重點&#xff1a;項目和文檔是本人近期原創所作&#xff01;程序可以將水表圖片里面的數據進行深度學習&#xff0c;提取相關信息訓練&#xff0c;lw1.3萬字重復15%&#xff0c;可以直接上交那種&…

Vue中<style scoped lang=“scss“>的含義

這段代碼中的<style scoped lang"scss">是HTML和Vue框架結合使用時常見的一個模式&#xff0c;具體含義如下&#xff1a; scoped&#xff1a;這是一個Vue.js特有的屬性&#xff0c;用來指定樣式只應用于當前組件的元素。沒有這個屬性時&#xff0c;樣式會全局應…

python給企微發消息

方法一&#xff1a;webhook方式。使用群機器人給企微群發消息 import requestsdef qwxsendmessage(msg):urlhttps://qyapi.weixin.qq.com/cgi-bin/webhook/send?key6c598840-804a-4eb5-a999-a023313 #url換成自己群機器人的webhookurldata{msgtype:text,text:{content:msg}}…

elasticsearch7.17 terms聚合性能提升90%+

背景 ES7 相比于 ES6 有多個層面的優化&#xff0c;對于開源的ES而言&#xff0c;升級是必經之路。 ES的使用場景非常多&#xff0c;在升級過程中可能會遇到非預期的結果&#xff1b; 比如之前文章提到的典型案例&#xff1a;ES7.17版本terms查詢性能問題 ES7.17版本terms查…

【Python筆記-FastAPI】后臺任務+WebSocket監控進度

目錄 一、代碼示例 二、執行說明 (一) 調用任務執行接口 (二) 監控任務進度 實現功能&#xff1a; 注冊后臺任務&#xff08;如&#xff1a;郵件發送、文件處理等異步場景&#xff0c;不影響接口返回&#xff09;監控后臺任務執行進度&#xff08;進度條功能&#xff09;支…

常見的幾種httpclient

工作是spring 項目一般都是使用ResTemplate 但是還是有些項目中會用到httpClient&#xff0c;沒有毛用。 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> …

pclpy 點云法線

pclpy 點云法線 一、算法原理1.理論入門2.選擇正確的比例 二、代碼三、結果四、相關數據 一、算法原理 表面法線是幾何表面的重要屬性&#xff0c;在許多領域&#xff08;例如計算機圖形應用程序&#xff09;中大量使用&#xff0c;以應用正確的光源來生成陰影和其他視覺效果。…

緩存穿透--一起學習吧之架構

緩存穿透是指查詢一個一定不存在的數據&#xff0c;由于緩存是不命中時需要從數據庫查詢&#xff0c;查不到數據則不寫入緩存&#xff0c;這將導致這個不存在的數據每次請求都要到數據庫去查詢&#xff0c;進而給數據庫帶來壓力。在高并發場景下&#xff0c;如果某個key被高并發…

Android 混淆是啥玩意兒?

什么是混淆 Android混淆&#xff0c;是伴隨著Android系統的流行而產生的一種Android APP保護技術&#xff0c;用于保護APP不被破解和逆向分析。簡單的說&#xff0c;就是將原本正常的項目文件&#xff0c;對其類、方法、字段&#xff0c;重新命名a,b,c…之類的字母&#xff0c…

森林滅火利器|便攜式森林消防滅火泵|恒峰智慧科技

隨著人們對環境保護意識的不斷提高&#xff0c;森林防火工作顯得尤為重要。然而&#xff0c;傳統的森林滅火方式存在諸多不便&#xff0c;如火勢蔓延迅速、滅火效率低下等。為了更好地保護森林資源&#xff0c;科學家們研發出了一種便攜式森林消防滅火泵&#xff0c;它的出現為…

利用css實現常見圖形

1、正圓形 給正方形盒子設置圓角屬性為寬高的50%。 div {width: 100px;height: 100px;background-color: plum;border-radius: 50%; } 2、膠囊形 給長方形盒子設置圓角屬性為盒子高度的50%。 div {width: 200px;height: 100px;background-color: plum;border-radius: 50px…

基于C#開發OPC DA客戶端——基于OPCDAAuto

OPC DA OPC DA(OPC Data Access)&#xff0c;即OPC數據訪問接口&#xff0c;定義了數據交換的規范&#xff0c;包括&#xff1a;過程值、更新時間、數據品質等信息。 自動化接口中共定義了6類對象&#xff1a;OPCServer對象、OPCBrowser對象、OPCGroups對象、OPCGroup對象、O…

steloj勒索病毒:[steloj@mailfence.com].steloj襲擊了您的計算機?

引言&#xff1a; 在數字時代&#xff0c;我們的數據是我們最寶貴的資產之一。然而&#xff0c;隨著科技的進步&#xff0c;網絡犯罪也在不斷演變。最新的威脅之一就是.[stelojmailfence.com].steloj勒索病毒。這種惡意軟件不僅能夠加密你的數據&#xff0c;而且還會要求贖金以…

C++11之字符串與數值之間的轉換

C11之字符串與數值之間的轉換 數值轉換為字符串字符串轉換為數值 在C11中提供了專門的類型轉換函數&#xff0c;程序猿可以非常方便的使用它們進行數值類型和字符串類型之間的轉換。 數值轉換為字符串 使用to_string()方法可以非常方便地將各種數值類型轉換為字符串類型&#…