RedisTemplate序列化

来源:互联网 发布:手机去广告软件 编辑:程序博客网 时间:2024/06/01 22:27

Spring提供了默认的StringSerializer和JdkSerializer。

  • StringSerializer就是通过String.getBytes()来实现的,而且在Redis中,所有存储的值都是字符串类型的。所以这种方法保存后,通过Redis-cli控制台,是可以清楚的查看到我们保存了什么key,value是什么。

  • JdkSerializationRedisSerializer,这个序列化方法是Idk提供的,要求要被序列化的类继承自Serializeable接口,然后通过Jdk对象序列化的方法保存,这个序列化保存的对象,即使是个String类型的,在redis控制台,也是看不出来的,因为它保存了一些对象的类型什么的额外信息。

keySerializer:这个是对key的默认序列化器。默认值是StringSerializer。

valueSerializer:这个是对value的默认序列化器,默认值是取自DefaultSerializer的JdkSerializationRedisSerializer。

hashKeySerializer:对hash结构数据的hashkey序列化器,默认值是取自DefaultSerializer的JdkSerializationRedisSerializer。

hashValueSerializer:对hash结构数据的hashvalue序列化器,默认值是取自DefaultSerializer的JdkSerializationRedisSerializer。


修改默认的序列化:

@Configurationpublic class RedisConfig {    /**     * 注册RedisTemplate的bean     * @param factory     * @return     */    @Bean    public RedisTemplate redisTemplate(RedisConnectionFactory factory) {        RedisTemplate redisTemplate = new RedisTemplate();        redisTemplate.setConnectionFactory(factory);        /**Jackson序列化  json占用的内存最小 */        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);        ObjectMapper om = new ObjectMapper();        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);        jackson2JsonRedisSerializer.setObjectMapper(om);        /**Jdk序列化   JdkSerializationRedisSerializer是最高效的*///      JdkSerializationRedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer();        /**String序列化*/        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();        /**将key value 进行stringRedisSerializer序列化*/        redisTemplate.setKeySerializer(stringRedisSerializer);        redisTemplate.setValueSerializer(stringRedisSerializer);        /**将HashKey HashValue 进行序列化*/        redisTemplate.setHashKeySerializer(stringRedisSerializer);        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);        redisTemplate.afterPropertiesSet();        return redisTemplate;    }}

自定义RedisTemplate,RedisConnectionFactory 是springBoot是自动注册的,当然也可以自己注册RedisConnectionFactory 的bean.

redis配置信息
这里写图片描述

原创粉丝点击