使用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中的结果截图: