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

使用springboot redis的依赖:

 <dependency>
      <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.1.6.RELEASE</version>
 </dependency>

在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

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

 

修改:

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

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

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

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

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

使用:

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

 @Autowired
    RedisTemplate<Object,Object> JsonRedisTemplate;//自定义的系列化机制

存入缓存:

 @Test
    public void Obj(){
        ArrayList<Tb_wxapp_activitytypeModel> 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中的结果截图:

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张帅三代

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值