一、默认序列化器
序列化器:RedisTemplate的默认序列化器是JdkSerializationRedisSerializer
可以通过查看RedisTemplate源码查证
数据转换:该序列化器会将数据序列化成对象,在redis中是以二进制的方式进行存储的。
注意:要保存的数据对象必须要实现Serializable,否则会提示没有序列化。
优点: 可以保存任意Java对象,并且序列化后的数据体积相对较小。
缺点: 由于以二进制方式存储,所以数据的可读性非常差。且序列化和反序列化过程相对较慢。
假设我们要存储一组数据,key为"name",value为"橘生淮南",在Java中代码如下:
redisTemplate.opsForValue().set("name","橘生淮南");
/*
* //这里的redisTemplate在类中已经进行自动装配
* @Autowired
* private RedisTemplate redisTemplate;
*/
运行后我们查看存入数据库的内容
可见,默认序列化器对key和value都使用了二进制进行存储,可读性非常差。因此,想要有较好的可读性,就必须更改它的序列化方式。
另外,RedisTemplate选用JdkSerializationRedisSerializer作为默认序列化器,并不是因为它是最优秀的序列化器,而是它具有一定的通用性和兼容性,可以适应大部分场景的需求。优缺点上面已经提到了,不再赘述。
二、可选序列化器
同样,通过查阅源码,可以得到支持的所有序列化器,如下:
这里只讨论比较常用的两个序列化器:
①GenericJackson2JsonRedisSerializer: 将数据序列化成json
我们可以通过配置RedisTemplate对序列化器进行配置:
@Configuration
@Slf4j
public class RedisConfiguration {
@Bean
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory