高級Java開發都會使用的GuavaCache內存緩存,你還不會嗎?

高級Java開發都會使用的GuavaCache內存緩存,你還不會嗎?

本篇主要是本地緩存代碼實戰,提供業務中常用的本地緩存使用代碼片段(直接跳過看標題五)


寫在前面: 長在業務系統中做開發,不會點高級知識點,有點不好意思了。在業務系統中,提高系統響應速度,提供系統高併發能力,其實方向很簡單,三個方向,六個字而已: 緩存降級限流。

當然這是在排除代碼質量非常差的情況,如果代碼質量很差,都是while循環和高內存佔用,那麼其實再怎麼做都於事無補。除非你有一個馬雲爸爸,性能不夠,機器來湊嘛。阿里雲前來支持(1000臺機器夠了嗎?)

高級Java開發都會使用的GuavaCache內存緩存,你還不會嗎?

一、什麼是Guave Cache

高級Java開發都會使用的GuavaCache內存緩存,你還不會嗎?

其實就是Google提供的一個開發工具包,裡面有很多好用的Java開工具,比如我們本文講的Cache緩存能力。說到緩存,每個業務系統中現在都會用到緩存,常用的緩存數據庫就是Redis和Memcache,這兩款kv數據庫最常用的場景就是當緩存使用,極其適合在微服務架構下做緩存使用。速度是極高的,但是跟本地緩存來比,還是算慢的,畢竟本地緩存其實就相當於一個Map集合,本地緩存獲取沒有網絡IO。但是最大的缺點是每臺服務器的本地緩存是不能共享的。所以如果要用分佈式緩存就可以跳過了。因為本文講的本地緩存使用。


說到底其實緩存我們就可以理解為是一個Map集合,不過生產中我們不能用Map來做緩存,除非是緩存的數據只有一點點一點點。否則如果數據量瞬時或者數據積累量很大,很容易就直接就把Map撐爆。導致內存溢出,服務宕機下線風險。 所以我們必須要對Map做控制。

  1. 控制數據量大小
  2. 控制數據生命週期
  3. 如果能做些數據命中率統計更好了


對,以上就是Guava Cache已經為我們做好的能力了。我們只用使用就可以了

二、什麼場景適合緩存


不長更新的數據都可以使用緩存,只要我們定時去刷新緩存獲取最新的數據就可以了。

注意: 凡是使用GuavaCache的地方都可以使用RedisCache,但是使用RedisCache的地方不一定可以使用GuavaCache。因為前面我們也說了Guava是本地緩存,不支持多服務器數據共享,如果要共享緩存數據直接用Redis是更好的選擇。

三、使用本地緩存,高併發會把機器打爆嗎

這個擔心是邏輯思考的必然,使用緩存主要是提高系統響應效率的,如果用不過把機器搞爆就不好了。所以這種擔心很有必要,但是隻要弄清楚沒參數或者它的實現原理就不用擔心了。4和5是快速入門即代碼片段,直接根據代碼去做不會有問題。

四、快速入門API

CacheBuilder

高級Java開發都會使用的GuavaCache內存緩存,你還不會嗎?

1. 設置最大緩存數量

高級Java開發都會使用的GuavaCache內存緩存,你還不會嗎?

2. 設置過期時間

高級Java開發都會使用的GuavaCache內存緩存,你還不會嗎?

dsaf

3.統計命中率

高級Java開發都會使用的GuavaCache內存緩存,你還不會嗎?


高級Java開發都會使用的GuavaCache內存緩存,你還不會嗎?


五、代碼片段

高級Java開發都會使用的GuavaCache內存緩存,你還不會嗎?

六、推薦Tomato

這是一個專門為SpringBoot項目設計的冪等組件,讓天下沒有難寫的防重代碼。 基於控制時間兩種防重策略。既可以做表單重複提交校驗,也可以做限流。基於Redis實現。

[官網](
https://tomato.springlearn.cn/)

高級Java開發都會使用的GuavaCache內存緩存,你還不會嗎?

高級Java開發都會使用的GuavaCache內存緩存,你還不會嗎?


分享到:


相關文章: