Spring Cache 使用详解及原理 ----非关系型数据库缓存框架

 Spring Cache

简介

Spring Framework 提供了一个强大的缓存抽象层,称为 Spring Cache,它可以帮助开发者轻松地集成各种缓存解决方案,如 Ehcache、Caffeine、Guava Cache、Redis 等。Spring Cache 的目标是提供一个统一的API来管理缓存,使得开发者无需关心底层缓存实现的具体细节。


框架优势

这个框架提供了一系列的注解,简化代码。且支持多个非关系型数据库。


Spring Cache 使用详解

1. 添加依赖

首先,您需要在项目的依赖管理文件中添加相应的缓存实现依赖。例如,如果您打算使用 Caffeine 作为缓存提供者,可以添加如下 Maven 依赖:

2.配置缓存管理器

接下来,您需要配置一个 CacheManager 实现类,这个类负责管理缓存区域(caches)。

3.使用注解

Spring Cache 提供了一系列的注解来支持缓存操作:

  • @Cacheable:用于方法上,表示该方法的结果将被缓存。当再次调用该方法时,如果缓存中存在结果,则直接返回缓存中的值。
  • @CachePut:用于更新缓存。当方法执行完毕后,其结果会被放入缓存中。
  • @CacheEvict:用于清除缓存。可以单独使用,也可以与 @Cacheable 或 @CachePut 一起使用来在方法执行后清除指定的缓存项。
  • @Caching:允许组合多个缓存操作注解。

4. 缓存键和缓存区域
  • 缓存键:默认情况下,方法的所有参数将被用来生成缓存键。可以通过 key 属性指定自定义的缓存键表达式。
  • 缓存区域:缓存区域是指定的一组缓存项的集合。可以通过 value 或 cacheNames 属性来指定缓存区域的名字。

5. 缓存过期

可以配置缓存项的有效时间。例如,在使用 Caffeine 时,可以通过配置 CaffeineCacheManager 来设置过期时间:

1@Bean
2public CacheManager cacheManager() {
3    CaffeineCacheManager cacheManager = new CaffeineCacheManager();
4    cacheManager.setCaffeine(caffeine -> caffeine.expireAfterWrite(5, TimeUnit.MINUTES));
5    return cacheManager;
6}
6. 多个缓存提供者

Spring Cache 支持同时使用多个缓存提供者。您可以为不同的场景选择不同的缓存技术。

7. 集中式缓存

对于分布式环境,您可以使用 Redis、Hazelcast 等集中式缓存解决方案,它们支持集群和高可用性。


常用注解


@EnableCaching  注解使用

介绍:加到启动类上,用于开启缓存注解功能


@CachePut 注解使用

注解中key参数的写法很灵活,用的是spEL 表达式,

                            有多种方式可选,优先最直观的第一种即可


 @Cacheable 注解使用

细节:  如果查到有缓存,则根本不会执行下面的方法。

             如果没有缓存,则会通过反射调用下面的方法,把返回结果,即案例中的user缓存到

              redis的缓存中,key的名就是已经通过前面的代码生成好的key

注意:这个注解中,参数key的 spEL表达式参数没有result的写法了,

                具体的可以查看源码中的注释


@CacheEvict  注解使用

删除一个拼接后的key,删除的参数列表和上述方法类似。

删除所有缓存,参数列表加一个allEntries参数


总结

Spring Cache 通过提供一个抽象层,简化了缓存的使用,使得开发者可以专注于业务逻辑而不用担心缓存的细节。通过使用适当的注解和配置,您可以很容易地在应用程序中实现缓存机制,从而提高应用程序的性能和响应速度。

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值