Springboot2.0整合Redis时的序列化与反序列化
2020-07-13 05:08
253 查看
首先说一下环境:
- springboot:2.1.7
- redis:5.0.5
在默认的情况下,两者整合后便可将数据缓存到redis,但是缓存进去的对象类型数据是经过jdk默认序列化过后的,在可视化工具中是HEX格式,看起来非常不方便,所以需要进行格式化
首先创建
FastJsonRedisSerializer类实现
RedisSerializer接口
public class FastJsonRedisSerializer<T> implements RedisSerializer<T> { public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); private Class<T> clazz; public FastJsonRedisSerializer(Class<T> clazz) { super(); this.clazz = clazz; } @Override public byte[] serialize(T t) throws SerializationException { if (t == null) { return new byte[0]; } return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET); } @Override public T deserialize(byte[] bytes) throws SerializationException { if (bytes == null || bytes.length <= 0) { return null; } String str = new String(bytes, DEFAULT_CHARSET); return JSON.parseObject(str, clazz); }
然后编写配置类,注入组件
/** * 设置 redis 数据默认过期时间 * 设置@cacheable 序列化方式 * * @return */ @Bean public RedisCacheConfiguration redisCacheConfiguration() { FastJsonRedisSerializer<Object> fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class); RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig(); configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(fastJsonRedisSerializer)).entryTtl(Duration.ofDays(30)); return configuration; }
此时便可将数据以json格式的形式存入Redis中
但此时当我们从Redis中获取数据时将会报错
com.alibaba.fastjson.JSONException: autoType is not support
百度搜索原因是反序列化有问题
需要在
FastJsonRedisSerializer类中的
deserialize方法加如下代码即可:
ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
以上便是解决序列化与反序列化的方法,但是具体的代码编写原因及实现过程还不太明白。若有更好的方法或文章可留言分享。
相关文章推荐
- Springboot2.0整合Redis时的序列化与反序列化
- SpringBoot2.0+ redis 对象值序列化乱码修改
- SpringBoot2.0整合Redis
- springboot整合redis并实现自定义序列化规则
- Spring Boot2.0之整合Redis
- SpringBoot整合Redis以及Redis的序列化
- 关于springboot 2.0 如何整合redis,看了好多教程,表示都不太好用,这里是单机版的
- spring boot 2.0完美整合mybatis注解版 加上redis储存数据 配上freemarker模板 实现用户的登录注册
- springboot2.0整合redis案例
- SpringBoot 2.x整合Redis配置,使用Json序列化
- SpringBoot2.0整合Redis
- spring boot 2.0 整合redis 完整代码
- SpringBoot 2.0及以上版本整合redis
- springboot2.0 session存储到redis整合过程中踩倒的坑
- SpringBoot整合Redis(附带序列化方式对比)
- Spring Boot2.0整合Redis以及常用操作介绍(附封装好的方法)
- springboot2.0整合redis-cluster集群
- springboot整合redis,需要自定义redisTemplate模板。采用的Jackson2JsonRedisSerializer序列化,拿来即用
- Spring Boot整合Redis时序列化设置
- springboot使用protostuff进行序列化和反序列化整合redis的redisTemplate的各种方法的写法