SpringBoot整合Redis作为缓存
此篇需要与前面整合默认缓存组件结合阅读(前面的缓存开启的注解等这里不再赘述)
SpringBoot的默认缓存使用
一、最简易方法
直接在pom文件中引入Redis的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
在配置文件中设置redis的ip地址和端口号:
spring:
redis:
host: 192.168.37.100
port: 6379
并且给要缓存的实体类实现Serializable接口,就可以初步使用Redis来存放缓存数据了。
因为SpringBoot默认使用SimpleCacheConfiguration作为默认配置,自动产生ConcurrentMapCacheManager作为CacheManager,而加入了redis的依赖后,CacheManager就变成了其Redis的的RedisCacheManager,所以无需进行过多的配置就可以简单地使用Redis作为缓存组件了。
但是这里有一个问题:存放的数据不是以json格式存放,难以阅读:
为了解决这一问题,那么就要使用下面的方法:
二、自定义RedisCacheManager
在配置类中使用@Bean注解向IOC容器中加入自定义的RedisCacheManager代替默认的,设置存放的规则,将对象数据转换成JSON格式,让对象在存入Redis时以JSON格式保存,更加清晰易读:
自定义的RedisCacheManager:
@Configuration
public class MyRedisConfiguration {
@Bean
RedisCacheManager cacheManager( RedisConnectionFactory redisConnectionFactory) {
// 使用缓存的默认配置
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
// 使用 GenericJackson2JsonRedisSerializer 作为序列化器
config = config.serializeValuesWith(
RedisSerializationContext.SerializationPair.fromSerializer(
new GenericJackson2JsonRedisSerializer()));
RedisCacheManager.RedisCacheManagerBuilder builder =
RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(config);
return builder.build();
}
}
这时候存放数据的时候可以发现Redis中对象按照JSON格式存储,并且读取缓存也没有问题。