org.springframework.cache.annotation.Cacheable、
缓存保存、更新、 失效时间
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration
org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration
@Cacheable
注解方法,用于获取缓存值, 如果没有缓存,则执行方法获取值并缓存起来, 否则直接取缓存值;
@CachePut
新值替换缓存中旧值
@CacheEvict
移除缓存
Cache Providers 加载顺序
![4165335-44ca478630dfe5ad.png](https://i-blog.csdnimg.cn/blog_migrate/4ecaa609aac5ac4d8ee57d68be3d5698.png)
image.png
![4165335-db9170b299777b46.png](https://i-blog.csdnimg.cn/blog_migrate/bea7efae31ea79dba3fc99aa27f96c12.png)
image.png
![4165335-28c6353e15d0d8f8.png](https://i-blog.csdnimg.cn/blog_migrate/83d329d96561eb1f6191bb35a1bdf128.png)
image.png
因此,只要注入spring-data-starter-redis就行了, 走redis
CacheAutoConfiguration 自动加载和配置, 不需要再手动设置了
![4165335-c91308066f7011ce.png](https://i-blog.csdnimg.cn/blog_migrate/584cbe158443275f2028c95d2312a0e1.png)
image.png
@EnableAutoConfiguration
![4165335-b6edbdf8a595b8ce.png](https://i-blog.csdnimg.cn/blog_migrate/6552c3a096f4d2e4d605125c59c793bc.png)
image.png
@EnableCaching 用不到的, 因为只有当需要用户自定义CacheManager的时候才能用到。用来做代码标记的。给Cache框架的扫描做标记的。
无论是定义方法, 还是CacheManager, 都必须标记的。
![4165335-e860d8966b40fb59.png](https://i-blog.csdnimg.cn/blog_migrate/d1a0a49a2ae194ee4fc13cf75482f674.png)
image.png
![4165335-51ee68634dc27fa8.png](https://i-blog.csdnimg.cn/blog_migrate/d8bd49840751d3abbb17eba54d94db4a.png)
image.png
总结: Cache的用法很简单, 引入spring-data-starter-redis,在包含缓存方法的类中, 注解@EnableCaching(也可注解在Application上),给Cache框架作标记。
@EnableCaching 和 @EnableScheduling 都得声明注解
![4165335-f3ebe25710fc48f2.png](https://i-blog.csdnimg.cn/blog_migrate/4996b736a304008d7bab6c41e785b657.png)
image.png