使用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

缓存已生效

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值