springboot+springCache+redis缓存中间件使用

博客介绍了缓存的作用,指出在查询场景中使用缓存可提升系统访问效率,但更新频繁的数据不推荐缓存,要保证数据一致性。还介绍了Spring Cache,它是Spring提供的缓存解决方案,可整合多种缓存方案,使用时需导入依赖、进行缓存配置和添加注解,并提及多服务缓存配置优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缓存作用

  • @

    举个例子:在我们程序中,很多配置数据(例如一个商品信息、一个白名单、一个第三方客户的回调接口),这些数据存在我们的DB上,数据量比较少,但是程序访问很频繁,这种情况下,将数据放一份到我们的内存缓存中将大大提升我们系统的访问效率,因为减少了数据库访问,有可能减少了数据库建连时间、网络数据传输时间、数据库磁盘寻址时间……

    总的来说,涉及查询场景都可以考虑使用缓存优化性能:1、查数据库2、读取文件3、网络访问,特别是调用第三方服务查询接口!

    注意:并不是缓存设计的多,性能就一定好,对更新频繁的数据,不推荐缓存,保证数据一致性是缓存的前提!

    一致性解释:缓存数据和数据库数据一致,避免脏(错误)数据!

  • SpringCache概念

    Spring Cache 是Spring 提供的一整套的缓存解决方案,它不是具体的缓存实现,它只提供一整套的接口和代码规范、配置、注解等,用于整合各种缓存方案,比如Redis、Caffeine、Guava Cache、Ehcache。使用注解方式替代原有硬编码方式缓存,语法更加简单优雅!

    SpringCache使用三步骤: 导入依赖 缓存配置 添加注解

  • SpringCache依赖导入

    缓存具体实现技术,我们选择redis

<!--spring-cache-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- redis连接池-->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>

SpringCache配置

- application.yml 

  > 配置缓存固定的连接信息等配置!
spring:  
  cache:
    type: redis  # 缓存设置为Redis类型
  redis:  # 设置Redis连接信息
    host: 124.221.70.206
    port: 6379
    jedis: # 设置Redis连接池
      pool:
        max-wait: 2000ms
        min-idle: 2
        max-idle: 8
        max-active: 10
- 配置类

   声明缓存配置序列化方式【json】,配置缓存时间多样化配置
 //配置缓存manager
@Bean
@Primary  //同类型,多个bean,默认生效! 默认缓存时间1小时!  可以选择!
public RedisCacheManager cacheManagerHour(RedisConnectionFactory redisConnectionFactory){
   
   

    RedisCacheConfiguration instanceConfig = instanceConfig(1 * 3600L);//缓存时间1小时

    //构建缓存对象
    return RedisCacheManager.builder(redisConnectionFactory)
            .cacheDefaults(instanceConfig)
            .transactionAware()
            .build();
}

//缓存一小时配置
@Bean
public RedisCacheManager cacheManagerDay(RedisConnectionFactory redisConnectionFactory){
   
   

    RedisCacheConfiguration instanceConfig = instanceConfig(24 * 3600L);//缓存时间1小时

    //构建缓存对象
    return RedisCacheManager.builder(redisConnectionFactory)
            .cacheDefaults(instanceConfig)
            .transactionAware()
            .build();
}


/**
 * 实例化具体的缓存配置!
 *    设置缓存方式JSON
 *    设置缓存时间 单位秒
 * @param ttl
 * @return
 */
private 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值