git地址:https://github.com/BeyongTheMemory/easy-cache
1.需求緣起
在項目中我們經常使用緩存,比如使用redis作為遠程緩存,使用Guava LocalCache作為本地緩存,等等。在業務與數據庫之間添加緩存既能降低數據庫的壓力同時也能提高系統性能。
但是在使用過程中難免會有這樣的問題:
- 寫入和刪除緩存的代碼硬編碼在項目中,無法專注于業務,代碼也不夠美麗;
- 對于不需要強依賴緩存或有降級需求的業務,需要自行維護緩存系統當前狀態(如依賴redis的需判斷其是否可用,不可用則不再訪問redis)同時還需有守護線程在緩存系統恢復后結束降級;
- 對于使用緩存的分布式系統,如何同時淘汰所有機器的本地緩存也是一個較為苦惱的問題;
- 等等
2.功能描述
Easy-Cache目前支持以下功能:
- 注解方式寫入與刷新緩存,支持SPEL表達式;
- 支持本地內存緩存(目前使用Guava實現,未來會有更多方式提供選擇)
- 分布式集群統一淘汰或寫入本地緩存(需利用Zookeeper,未來會提供更多使用方案)
- 支持遠程緩存(目前暫只支持redis,未來會支持更多類型)
3.使用方式
3.1. 添加maven依賴:
<dependency>
<groupId>online.ipop</groupId>
<artifactId>easycache</artifactId>
<version>0.0.1-RELEASE</version>
<type>pom</type>
</dependency>
3.2. 添加如下配置到你的spring配置文件中:
<bean class="com.pop.easycache.CacheBuilder">
</bean>
3.3.為上面的bean配置參數,主要參數有如下幾個:
- useLocalCache 是否啟用本地緩存,默認為false
- useRemoteCache 是否啟用遠程緩存,默認為false
- useRegistry 是否啟用注冊中心(用于在集群間同步本地緩存更新,默認為false)
注:若啟用遠程緩存或注冊中心,還需增加遠程緩存及注冊中心服務地址的相關配置。
因此最終你的配置可能是這樣子:
<bean class="com.pop.easycache.CacheBuilder">
<property name="useLocalCache" value="true"/>
<property name="useRemoteCache" value="true"/>
<property name="useRegistry" value="true"/>
<property name="redisUrl" value="127.0.0.1"/>
<property name="redisPort" value="6379"/>
<property name="registryServer" value="127.0.0.1"/>
</bean>
更多配置項請參看com.pop.easycache.CacheBuilder下的注釋
3.4. 添加注解:
- 需要緩存的方法:添加@NeedCache注解,可選參數有name和key,name和key將共同組成緩存的鍵值,其中key支持SPEL表達式
- 需要清楚緩存:添加@CacheFlush注解,可選參數有name和key,其中key支持SPEL表達式