Java Cache
基本原理
核心内容
java cache API的5个核心接口:CachingProvider,CachingManager,Cache,Entry,ExpiryPolicy
CachingProvider:
缓存提供者定义建立,配置,获得,管理,控制一个或者多个CacheManager的机制。一个应用程序能使用一个或者多个CacheProvider在运行时。
CachingManager:
缓存管理者定义建立,配置,获得,管理,控制一个或者多个唯一名称的Caches,在CacheManager的上下文中。一个CacheManager被一个CachingProvider拥有。
Cache:
Cache有点像一个Map的数据结构,准许临时存储基于K-V结构的数据,例如像:java.util.Map的数据结构。一个Cache被一个CacheManger拥有。
Entry:
Entry是有缓存存储的单个键值对元素
ExpiryPolicy:
ExpiryPolicy被用于设置过期策略
存储方式:
值存储:缓存将拷贝应用提供的keys和values,缓存中存储的是一个拷贝副本,存储在缓存中的数据不会因为后续应用中修改keys和values发生改变,数据必须实现序列化。
举例:redis
引用存储:缓存中存储的是应用提供的keys和values的引用值,应用的keys和values值发生改变后,引用指向的值也会发生改变
举例:JVM本地缓存guava
Spring Cache
基本原理
核心内容
缓存声明
spring缓存声明的注解:@Cacheable,@CacheEvict,@CachePut,@Caching,@CacheConfig
@Cacheable:
@Cacheable配置数据对象
@CacheEvict:
@CacheEvict删除缓存数据
@CachePut:
@CachePut在不影响方法执行的情况下,更新缓存信息
@Caching:
@Caching将应用与方法的多个缓存重新分组
@CacheConfig:
@CacheConfig共享一些常见的缓存配置,提供类级别的配置,可以共享缓存名称