修改springboot redis 缓存数据的格式。改变默认序列化成json格式。

使用springboot redis的依赖:

 
      org.springframework.boot
            spring-boot-starter-data-redis
            2.1.6.RELEASE
 

在application.properties中配置好 springboot redis的连接信息:

#配置springboot 依赖的redis
spring.redis.host=127.0.0.1
spring.redis.port=6379

在项目的包下创建一个config文件夹,用于存放自定义配置的java类文件。

【注意:springboot会自动检查包名,若存在名为config的文件夹,此文件夹的配置优先级会更高。】

 创建名为MyRedisConfig的redis配置类。用于存放自定义的配置。

首先。我们可以从 RedisAutoConfiguration配置类中看到。

springboot redis 默认使用的 Redis模板类为:RedisTemplate.java。此模板类中默认使用的序列化机制为:JdkSerializationRedisSerializer

默认的存入数据序列化截图为:

修改springboot redis 缓存数据的格式。改变默认序列化成json格式。_第1张图片

 

修改:

将RedisAutoConfiguration中的一下代码进行复制:

@Bean
    @ConditionalOnMissingBean(
        name = {"redisTemplate"}
    )
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
        RedisTemplate template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }

粘贴在自定义的MyRedisConfig类中,并修改成以下代码:

 @Bean
    public RedisTemplate JsonRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
        RedisTemplate template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        template.setDefaultSerializer(new Jackson2JsonRedisSerializer(Object.class));
        return template;
    } 
  

new Jackson2JsonRedisSerializer()是redis内部提供的json序列化机制之一。

使用:

在test文件夹的测试类下自动注入自定义的配置。

 @Autowired
    RedisTemplate JsonRedisTemplate;//自定义的系列化机制

存入缓存:

 @Test
    public void Obj(){
        ArrayList arrayList = tb_wxapp_activitytype_interface.getAllActivityTypes();//此处为从数据库中查询到的数据
        //默认如果保存对象jdk序列化机制,系列化后的数据保存到redis。默认的机制会将保存的对象序列化。
        //redisTemplate.opsForValue().set("allActivityTypes",arrayList);

        //修改默认的序列化机制,将系列化的内容改成json格式。将内容json化。
        JsonRedisTemplate.opsForValue().set("allActivityTypes",arrayList);
    }

获取缓存中的数据,并打印出来:

@Test
    public void getObj(){
        System.out.println(JsonRedisTemplate.opsForValue().get("allActivityTypes"));
    }

输出结果:

[{id=1, typename=摄影类, createtime=1566307002, createip=null, updatetime=1043636991, updateip=127.0.0.1, deletetime=1052979151, deletetip=null, remark=}, {id=2, typename=音乐类, createtime=1566307301, createip=null, updatetime=null, updateip=null, deletetime=null, deletetip=null, remark=主要以一段音频为参赛作品参赛}]

Redis中的结果截图:

修改springboot redis 缓存数据的格式。改变默认序列化成json格式。_第2张图片

你可能感兴趣的:(张小三,SSM,spring,boot,学习笔记)