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共享一些常見的緩存配置,提供類級別的配置,可以共享緩存名稱