一、JSR107简介(复杂用的较少,多使用Spring缓存抽象以JSR107为基础)
Java Caching 定义了5个核心接口,分别是CachingProvider、CacheManager、Cache、Entry、Expiry
1、CachingProvider
:定义了创建、配置、获取、管理、和控制多个CacheManager,一个应用可以在运行期间访问多个CachingProvider。
2、CacheManager
:定义了创建、配置、获取、管理和控制多个唯一命名的Cache存在于CacheManager的上下文中,一个CacheManager仅被一个CachingProvider所拥有。
3、Cache
:是一个类似Map的数据结构并且临时存储以key为索引的值,一个Cache仅被一个CacheManager拥有。
4、Entry
:是一个存储在Cache中的key-value对。
5、Expiry
:每一个存储在Cache中的条目有一个定义的有效期,一旦超过这个时间,条目为过期的状态。一旦过期,条目不可访问、更新和删除。缓存有效期可以通过ExpiryPolicy进行设置。
二、导入JSR307
<dependency>
<groupId>javax.cache</groupId>
<artifactId>cache-api</artifactId>
</dependency>
三、Spring缓存抽象
1、基本名词解释
Cache | 缓存接口、定义缓存的操作。实现有:RedisCache、EhCacheCache、ConcurrentCache |
---|---|
CacheManager | 缓存管理器、管理各种缓存(Cache)组件 |
@Cacheable | 只要针对方法配置、能够根据方法的请求参数对结果进行缓存 |
@CacheEvict | 清空缓存 |
@CachePut | 保证方法被调用,又希望结果被缓存 |
@EnableCaching | 开启基于注解的缓存 |
keyGenerator | 缓存数据时key生成策略 |
serialize | 缓存数据时value序列化策略 |