快取概述


快取模組是以EhCache作為預設JVM進程內快取服務,透過整合外部Redis服務實現多層快取(MultiLevel)的輕量級快取框架,並與YMP框架深度整合(支援針對類別方法的快取,可以根據方法參數值進行快取),靈活的配置、易於使用和擴充;

Maven套件依賴

<dependency>
    <groupId>net.ymate.platform</groupId>
    <artifactId>ymate-platform-cache</artifactId>
    <version>2.0-SNAPSHOT</version>
</dependency>

  • 在專案的pom.xml中加入上述配置,該模組已經預設引入核心包依賴,無需重複配置。
  • 若需要啟用redis作為快取服務,請新增下列相依性配置:

    <dependency>
        <groupId>net.ymate.platform</groupId>
        <artifactId>ymate-platform-persistence-redis</artifactId>
        <version>2.0-SNAPSHOT</version>
    </dependency>

基礎介面概念

開發者可以根據以下介面完成對快取模組的自訂擴充實作;

  • 快取服務提供者(ICacheProvider )介面:

    • DefaultCacheProvider - 基於EhCache快取服務的預設快取服務提供者介面實作類別;
    • RedisCacheProvider - 基於Redis資料庫的快取服務提供者介面實作類別;
    • MultievelCacheProvider - 融合EhCache和Redis兩者的快取服務提供者介面實作類,透過MultilevelKey決定快取物件的取得方式;
  • 快取Key產生器( IKeyGenerator)介面:

    • DefaultKeyGenerator - 根據提供的類別方法和參數物件產生快取Key,預設是將方法和參數物件進行序列化後取其MD5值;
  • #序列化服務(ISerializer)介面:

    • DefaultSerializer - 預設序列化服務採用JDK自帶的物件序列化技術實作;
  • #快取事件監聽(ICacheEventListener)介面:用於監聽被快取物件改變時的事件處理,需開發者實作介面;

  • 快取作用域處理器(ICacheScopeProcessor)介面:用於處理@Cacheable註解的Scope參數設定為非DEFAULT作用域的快取對象,需開發者實作介面;