Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能。
Spring Cache提供了一层抽象,底层可以切换不同的缓存实现,例如:
- Redis
- EHCache
- Caffeine
基本思路
入门案例
导入maven坐标
在启动类里面添加注解:
@EnableCaching
@Slf4j
@SpringBootApplication
public class CacheDemoApplication {
public static void main(String[] args) {
SpringApplication.run(CacheDemoApplication.class,args);
log.info("项目启动成功...");
}
}
插入的时候保存到Redis缓存里面
查询的时候保存到Redis缓存里面
删除数据库数据的同时删除缓存中的数据
Spring Cache 是一个非常有用的功能,可以帮助应用程序提升性能,但也有一些潜在的缺点:
1.缓存一致性难题:当缓存与数据库或其他系统中的数据不一致时,可能导致数据不一致性的问题,需要谨慎处理缓存更新策略。
2.缓存击穿:指某个热点数据过期或被同时大量请求时,会导致大量请求直接打到数据库,造成数据库压力剧增。
3.缓存雪崩:指缓存中大量的数据在同一时间失效,导致大量的请求直接打到数据库,造成数据库瞬时压力过大。
4.内存占用问题:缓存需要一定的内存空间来存储数据,如果缓存数据量过大,会消耗大量的内存资源。
5.复杂性增加:引入缓存会增加系统的复杂性,特别是在多级缓存、分布式缓存的情况下,需要考虑缓存同步、一致性等问题。
6.缓存穿透:指查询一个不存在的数据,由于缓存无法命中,每次都要访问数据库,增加数据库的负载。
为了有效利用 Spring Cache,需要结合具体场景,合理选择缓存策略、缓存失效时间,并考虑好缓存更新时机和同步策略,以避免上述潜在问题。
当然啦这是最基础的用法,还有设置缓存时间、配置序列化json等用法 ,个人不太喜欢这种方法,建议直接用StringRedisTemplate。
END