Redis反序列化失敗的解決方法
什么是序列化和反序列化
序列化是將對(duì)象轉(zhuǎn)換為字符串以便存儲(chǔ)傳輸?shù)囊环N方式。而反序列化恰好就是序列化的逆過程,反序列化會(huì)將字符串轉(zhuǎn)換為對(duì)象供程序使用。在PHP中序列化和反序列化對(duì)應(yīng)的函數(shù)分別為serialize()和unserialize()。
問題
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of org.springframework.security.core.authority.SimpleGrantedAuthority (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (byte[])"…
原序列化配置
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// 使用 StringRedisSerializer 來序列化和反序列化key 的值
redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer);
// hash的key也采用StringRedisSerializer 的序列化方式
redisTemplate.setHashKeySerializer(stringRedisSerializer);
redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
修改配置
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
// String的序列化
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// json序列化配置
GenericFastJsonRedisSerializer fastJsonRedisSerializer = new GenericFastJsonRedisSerializer();
// key采用String的序列化方式
redisTemplate.setKeySerializer(stringRedisSerializer);
// value的序列化方式采用fastJson的方式
redisTemplate.setValueSerializer(fastJsonRedisSerializer);
// hash的key也采用String 的序列化方式
redisTemplate.setHashKeySerializer(stringRedisSerializer);
// hash的value序列化方式采用fastJson
redisTemplate.setHashValueSerializer(fastJsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
解決方法
使用 GenericFastJsonRedisSerializer替換 GenericFastJsonRedisSerializer
到此這篇關(guān)于Redis 反序列化失敗的解決方法的文章就介紹到這了,更多相關(guān)Redis 反序列化失敗內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis中Key過期時(shí)間的設(shè)置與應(yīng)用方式
文章主要介紹了Redis中設(shè)置和管理Key過期時(shí)間的多種命令,包括EXPIRE、PEXPIRE、EXPIREAT、PEXPIREAT、SET命令結(jié)合EX或PX參數(shù)、SETEX命令,以及獲取剩余過期時(shí)間的TTL和PTTL命令,最后通過緩存、會(huì)話管理和分布式鎖等應(yīng)用場景展示了這些命令的實(shí)際應(yīng)用2025-11-11
redis不能訪問本機(jī)真實(shí)ip地址的解決方案
這篇文章主要介紹了redis不能訪問本機(jī)真實(shí)ip地址的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
ubuntu 16.04安裝redis的兩種方式教程詳解(apt和編譯方式)
這篇文章主要介紹了ubuntu 16.04安裝redis的兩種方式教程詳解(apt和編譯方式),需要的朋友可以參考下2018-03-03
淺析Redis中String數(shù)據(jù)類型及其底層編碼
這篇文章主要介紹?Redis?中?String?數(shù)據(jù)類型及其底層編碼,文中有詳細(xì)的代碼示例,對(duì)大家的工作及學(xué)習(xí)有一定的幫助,需要的朋友可以參考下2023-05-05

