欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用Redis作为Spring Boot的缓存管理器步骤

程序员文章站 2024-01-20 16:09:52
使用redis作为springboot项目的缓存Spring Boot 自带了基于ConcurrentHashMap的 Simple 缓存管理器,Simple 只适合单体应用或者开发环境使用,再或者是一个小微系统,通常应用为分布式应用时,则需要集成 EhCache、Redis 等分布式缓存管理器。给项目添加Redis缓存的步骤:导入redis缓存的启动器 org.springframework.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
注意,没必要让需要进行格式转换的类继承序列化接口

启动项目后 先清空控制台

使用Redis作为Spring Boot的缓存管理器步骤
访问添加了缓存注解的service层方法后, 控制台打印:
使用Redis作为Spring Boot的缓存管理器步骤
由于项目之前启动过,redis已经保存了相应的缓存信息,所以这次访问直接没走数据库,走的redis缓存

尝试将redis中数据清空
使用Redis作为Spring Boot的缓存管理器步骤
再次访问,控制台打印
使用Redis作为Spring Boot的缓存管理器步骤
可见此时走的mysql

再次访问,控制台打印:
使用Redis作为Spring Boot的缓存管理器步骤
此时又走redis

缓存已生效

本文地址:https://blog.csdn.net/qq_42168543/article/details/110791324