思考
redis序列化可能是平时开发中常见的,那么可能会忽略一些细节,
redis默认序列化模式是什么呢?
@Autowired
private RedisTemplate<String,Object> redisTemplate;
这段代码,序列化模式是啥?
那么我们配置了redisConfig后指定了序列化后 上述代码有啥变化?
有哪些序列化模式?
默认序列化
if (this.defaultSerializer == null) {
this.defaultSerializer = new JdkSerializationRedisSerializer(this.classLoader != null ? this.classLoader : this.getClass().getClassLoader());
}
看源码,发现默认序列化模式是JdkSerializationRedisSerializer
那么它存储的特点是啥呢->二进制进行存储,可读性很差,但是兼容很强,可以存储任意类型数据。
我们配置了序列化模式后
@Bean(name="serializableRedisTemplate")
public RedisTemplate<String,Object> serializableRedisTemplate(RedisConnectionFactory connectionFactory){
RedisTemplate<String,Object> rt = new RedisTemplate<>();
rt.setConnectionFactory(connectionFactory);
rt.setKeySerializer(new StringRedisSerializer());
rt.setValueSerializer(new JdkSerializationRedisSerializer());
rt.afterPropertiesSet();
return rt;
}
当我们配置了序列化模式后,那么引入则需要改变
@Resource
private RedisTemplate<String, Serializable> serializableRedisTemplate;
后续
我们常见的序列化模式有:
JdkSerializationRedisSerializer
GenericJackson2JsonRedisSerializer
GenericToStringSerializer
OxmSerializer
当然我们的springboot redis也有一些现成的组件使用
@Autowired
private StringRedisTemplate stringRedisTemplate;