使用Redis作为Spring Boot的缓存管理器步骤
使用redis作为springboot项目的缓存
Spring Boot 自带了基于ConcurrentHashMap的 Simple 缓存管理器,Simple 只适合单体应用或者开发环境使用,再或者是一个小微系统,通常应用为分布式应用时,则需要集成 EhCache、Redis 等分布式缓存管理器。
给项目添加Redis缓存的步骤:
- 导入redis缓存的启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>${spring-boot.version}</version>
</dependency>
<!--版本自选->
- 配置spring boot配置文件
spring.redis.host=172.27.40.188
spring.redis.port=6379
# 配置 redis 服务器的ip和端口即可
- 编写redis缓存的配置类 (这里将其命名为
RedisCacheConfig
)
@Configuration
public class RedisCacheConfig {
@Bean
public RedisTemplate<Object, ItemKill> itemKillRedisTemplate(
RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate<Object, ItemKill> template = new RedisTemplate<Object, ItemKill>();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer<ItemKill> ser = new Jackson2JsonRedisSerializer<ItemKill>(ItemKill.class);
template.setDefaultSerializer(ser);
return template;
}
@Primary //将某个缓存管理器作为默认的
@Bean
public RedisCacheManager ItemKillCacheManager(RedisTemplate<Object, ItemKill> itemKillRedisTemplate){
RedisCacheManager cacheManager = new RedisCacheManager(itemKillRedisTemplate);
//key多了一个前缀
//使用前缀,默认会将CacheName作为key的前缀
cacheManager.setUsePrefix(true);
return cacheManager;
}
}
在缓存配置类中注入了两个bean,第一个是RedisTemplate的泛型类实例,有了这个才能将pojo转为json格式存储到redis服务器中(注意要将需要存储进redis的pojo类(这里的ItemKill)填入方法中相应位置 此时这个实例可以实现将ItemKill类的pojo转为json格式 然而此时它无法发挥作用,因为默认的redis的缓存管理器不使用它,所以第二个baen新建了一个使用自定义RedisTemplate的的缓存管理器,该缓存管理器被注入容器之后会代替默认提供的缓存管理器
@Primary //将某个缓存管理器作为默认的 没有该注解则会报错!
- @Cacheable等缓存注解的使用和之前使用simple管理器时类似,注意设置注解中的key和value外,指定需要使用的缓存管理器:
cacheManager = "ItemKillCacheManager"
@Cacheable(value = "test", key = "#killId",cacheManager = "ItemKillCacheManager")
不指定也没问题,springboot会默认使用户注入的缓存管理器
以上是对一个java类进行json-pojo的格式转换,如果需要对n个java类进行格式转换 则需要注入n对bean
注意,没必要让需要进行格式转换的类继承序列化接口
启动项目后 先清空控制台
访问添加了缓存注解的service层方法后, 控制台打印:
由于项目之前启动过,redis已经保存了相应的缓存信息,所以这次访问直接没走数据库,走的redis缓存
尝试将redis中数据清空
再次访问,控制台打印
可见此时走的mysql
再次访问,控制台打印:
此时又走redis
缓存已生效
本文地址:https://blog.csdn.net/qq_42168543/article/details/110791324
推荐阅读
-
使用Redis作为Spring Boot的缓存管理器步骤
-
nodejs使用redis作为缓存介质实现的封装缓存类示例
-
ZooKeeper的部署以及简单使用 springmvc+mybatisdubbo+zookeeperrestful redis分布式缓存spring mvc
-
ZooKeeper的部署以及简单使用 springmvc+mybatisdubbo+zookeeperrestful redis分布式缓存spring mvc
-
dubbo总结(2)——dubbo的使用场景 springmvc+mybatisdubbo+zookeeperrestful redis分布式缓存spring mvc
-
dubbo总结(2)——dubbo的使用场景 springmvc+mybatisdubbo+zookeeperrestful redis分布式缓存spring mvc
-
Spring Boot使用redis做数据缓存
-
Spring Boot设置并使用缓存的步骤
-
spring boot中内嵌redis的使用方法示例
-
详解Spring boot使用Redis集群替换mybatis二级缓存