本文章用于个人学习记录
一、前言
1、SpringCache是Spring提供的一个缓存框架,在Spring3.1版本开始支持将缓存添加到现有的spring应用程序中,在4.1开始,缓存已支持JSR-107注释和更多自定义的选项。Spring 从 3.1 开始定义了 org.springframework.cache.Cache 和 org.springframework.cache.CacheManager 接口来统一不同的缓存技术; 并支持使用 JCache(JSR-107)注解简化我们开发;
2、Spring Cache利用了AOP,实现了基于注解的缓存功能,并且进行了合理的抽象,业务代码不用关心底层是使用了什么缓存框架,只需要简单地加一个注解,就能实现缓存功能了,做到了对代码侵入性做小。
3、由于市面上的缓存工具实在太多,SpringCache框架还提供了CacheManager接口,可以实现降低对各种缓存框架的耦合。它不是具体的缓存实现,它只提供一整套的接口和代码规范、配置、注解等,用于整合各种缓存方案,比如Caffeine、Guava Cache、Ehcache。
是Spring为了业务和缓存的解耦而研发出的一个简便使用缓存的框架。而Redis只是一个缓存中间件(缓存数据库),可以有很多产品替代它,只不过目前Redis比较受欢迎,使用度更加广泛而已。对于有些项目里面有可能只是用到了Redis,而没有用到SpringCache,那么里面Redis作为缓存使用的话只能像我文章前面说的那种通过传统的代码式(调用API显示的书写缓存查询和存储)去使用。更推荐大家使用SpringCache哟,毕竟注解可以大大的简化我们的开发。
每次调用需要缓存功能的方法时,Spring 会检查检查指定参数的指定的目标方法是否已 经被调用过;如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法并缓 存结果后返回给用户。下次调用直接从缓存中获取。
在SpringCache官网中,有一个缓存抽象的概念,其核心就是将缓存应用于Java方法中,从而减少基于缓存中可用信息的执行次数。换句话来说。就是每次调用目标方法前,SpringCache都会先检查该方法是否正对给定参数执行,如果已经执行过,就直接返回缓存的结果。(通俗的讲,就是查看缓存里面是否有对应的数据,如果有就返回缓存的数据),而无需执行实际方法、如果该方法上位执行。则执行该方法(缓存中没有对应的数据就执行方法获取对应数据,并进行缓存),并缓存结果并返回给用户。这样就不用多次去执行数据库操作,减少cpu和io的消耗。
基础信息介绍
SpringCache详解_幼儿园里的山大王的博客-CSDN博客
三、SpringCache与Redis使用步骤:
总结起来就是,引入redis包和cache包,配置好redis的yaml,使用注解开启缓存就可以了
spring.cache.type=redis
spring.cache.redis.time-to-live=3600000 #毫秒为单位,缓存过期时间
spring.cache.redis.cache-null-values=true #是否缓存空值,防止缓存穿透
推荐参考 kspringcache的使用详解(使用redis做分布式缓存)_springcache使用_秃了也弱了。的博客-CSDN博客
也可参考--SpringCache整合Redis实现项目缓存解决方案_IT美男子的博客-CSDN博客