很久沒有寫博客了,這段時間一直忙於看論文,寫論文,簡直頭大,感覺還是做項目比較舒服,呵呵,閑話不多說,今天學習了下Guava緩存,這跟Redis類似的,但是適用的場景不一樣,學習下吧。今天我們主要是springboot集成Guava緩存是如何實現的,且看下面分析:
1.GuavaCache的介紹
在多線程高並發場景中往往是離不開cache的,需要根據不同的應用場景來需要選擇不同的cache,比如分布式緩存如redis、memcached,還有本地(進程內)緩存如ehcache、GuavaCache。之前用spring cache的時候集成的是ehcache,但接觸到GuavaCache之后,被它的簡單、強大、及輕量級所吸引。它不需要配置文件,使用起來和ConcurrentHashMap一樣簡單,而且能覆蓋絕大多數使用cache的場景需求!一般而言,對於那些頻繁需要查詢比對的熱點數據,我們采用使用緩存。
Guava的使用:
對於數據量較小的,幾條,幾十條數據,而且需要加緩存的接口較少,這時候我們會采用Cache,建議使用Google提供的guava Cache,它簡單易用的同時,性能也好. 而且線程安全。
GuavaCache畢竟是一款面向本地緩存的,輕量級的Cache,適合緩存少量數據。如果你想緩存上千萬數據,可以為每個key設置不同的存活時間,並且高性能,那並不適合使用GuavaCache.
Redis的使用:
對於那些較大數據量的,或者需要加緩存的接口較多的項目,可以去考慮Redis,memcached等等
2. 如何使用Cache
和Map的使用方式差不多,put與get存放key和獲取值。
3、Guava緩存的使用:
一般的cache都會實現的基礎功能包括:
一般緩存會提供一個存儲緩存的容器,該容器實現了存放(Put)和讀取(Get)緩存的接口供外部調用。 緩存通常以<key,value>的形式存在,通過key來從緩存中獲取value。當然容器的大小往往是有限的(受限於內存大小),需要為它設置清除緩存的策略。
在GuavaCache中緩存的容器被定義為接口Cache<K, V>的實現類,這些實現類都是線程安全的,因此通常定義為一個單例。並且接口Cache是泛型,很好的支持了不同類型的key和value。
4、springboot集成guava緩存
SpringBoot為我們提供了自動配置多個CacheManager的實現

功能還是很強大的。
(1)首先添加jar包:

(2)封裝一個cache工具類

(3)在使用的時候調用這個工具類即可。
當然這是很傳統的方式來使用guava緩存,springboot集成guava很多時候是基於注解的開發使用的。

關於springboot中cache的使用,我們可以參考下一位博主的github代碼:
https://github.com/lianggzone/springboot-action/tree/master/springboot-action-cache
這里面集成了ecahce和guava的一些內容。
不得不說springboot的貢獻之大,非常感謝!
