緩存的背景
緩存,在我們日常開發中是必不可少的一種解決性能問題的方法。簡單的說,cache 就是為了提升系統性能而開辟的一塊內存空間。在cpu進行計算的時候, 首先是讀取寄存器,然后內存,再是硬盤。由於寄存器容量很小,不太適合存儲我們需要快速讀取的數據,放在硬盤中話,效率太低,所以大多數人將一些靜態資源或者不經常修改的數據放在內存中。
緩存的作用
緩存的主要作用是暫時在內存中保存業務系統的數據處理結果,並且等待下次訪問使用。在日常開發的很多場合,由於受限於硬盤 IO的性能或者我們自身業務系統的數據處理和獲取可能非常費時,當我們發現我們的系統這個數據請求量很大的時候,頻繁的IO和頻繁的 邏輯處理會導致硬盤和CPU資源的瓶頸出現。緩存的作用就是將這些來自不易的數據保存在內存中,當有其他線程或者客戶端需要查詢相同 的數據資源時,直接從緩存的內存塊中返回數據,這樣不但可以提高系統的響應時間,同時也可以節省對這些數據的處理流程的資源消耗,整體上來說,系統性能會有大大的提升。
guava cache與spring整合
大家都清楚,相對於靜態Map實現本地緩存而言guava cache提供了許多種對緩存管理策略,比如:緩存個數、緩存生存期、緩存提取策略(LRU)等, 也正是這樣,guava cache在本地緩存層面上使用是開發人員的首選。而在企業開發中spring是用的最多的,如果將guava cache與spring整合,依靠spring強大的IOC和AOP在使用緩存時是很方便、 快捷的,而要實現spring與guava cache整合 只需要以下三個步驟就可以搞定:
建立spring-cache.xml
首先建立spring-cache.xml 里面配置spring對guava cache基本參數的管理,如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c" xmlns:p="http://www.springframework.org/schema/p" xmlns:cache="http://www.springframework.org/schema/cache" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.0.xsd"> <!--啟動注解 進行guava cache 管理--> <cache:annotation-driven cache-manager="cacheManager" proxy-target-class="true"/> <bean id="cacheManager" class="org.springframework.cache.support.CompositeCacheManager"> <property name="cacheManagers"> <list> <!--將guava cache交於spring管理 如果要實現redis 也可以加在這里--> <ref bean="guavaCacheManager"/> </list> </property> <property name="fallbackToNoOpCache" value="true"/> </bean> <!--配置guava cache需要緩存的key 以及建立方式--> <bean id="guavaCacheManager" class="com.daojia.open.confluence.worker.common.GuavaCacheManager"> <property name="configMap"> <map key-type="java.lang.String" value-type="com.google.common.cache.CacheBuilder"