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