【Redis优化】SpringDataRedis序列化方式对比

一、默认序列化器

序列化器:RedisTemplate的默认序列化器JdkSerializationRedisSerializer

可以通过查看RedisTemplate源码查证

默认序列化器

数据转换:该序列化器会将数据序列化成对象,在redis中是以二进制的方式进行存储的。

注意:要保存的数据对象必须要实现Serializable,否则会提示没有序列化。

优点: 可以保存任意Java对象,并且序列化后的数据体积相对较小。

缺点: 由于以二进制方式存储,所以数据的可读性非常差。且序列化和反序列化过程相对较慢。

假设我们要存储一组数据,key为"name",value为"橘生淮南",在Java中代码如下:

redisTemplate.opsForValue().set("name","橘生淮南");
/*
*  //这里的redisTemplate在类中已经进行自动装配
*   @Autowired
*   private RedisTemplate redisTemplate;
*/

运行后我们查看存入数据库的内容

默认序列化器存入示例

可见,默认序列化器对key和value都使用了二进制进行存储,可读性非常差。因此,想要有较好的可读性,就必须更改它的序列化方式。

另外,RedisTemplate选用JdkSerializationRedisSerializer作为默认序列化器,并不是因为它是最优秀的序列化器,而是它具有一定的通用性和兼容性,可以适应大部分场景的需求。优缺点上面已经提到了,不再赘述。

二、可选序列化器

同样,通过查阅源码,可以得到支持的所有序列化器,如下:

image-20240302155945631

这里只讨论比较常用的两个序列化器:

①GenericJackson2JsonRedisSerializer: 将数据序列化成json

我们可以通过配置RedisTemplate对序列化器进行配置:

@Configuration
@Slf4j
public class RedisConfiguration {
   
   

    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值