日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

本地缓存防止缓存击穿_防止缓存爆炸的快速提示

發布時間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 本地缓存防止缓存击穿_防止缓存爆炸的快速提示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本地緩存防止緩存擊穿

在很多情況下,您都可以從應用程序中的常用對象緩存中受益,特別是在面向Web和微服務的環境中。 您可以在Java中執行的最簡單的緩存類型可能是引入一個私有HashMap,在計算對象之前先查詢該哈希表,以確保您不會重復執行此操作。

這是一個例子:

public class PrimeService {private Map<Long, BigInteger> cache = new HashMap<>();public BigInteger getPrime(long minimum) {return cache.computeIfAbsent(minimum, m -> BigInteger.valueOf(m).nextProbablePrime());}}

這是解決該問題的快速方法,但遺憾的是效率不高。 在幾個月后人們將各種各樣的瘋狂數字輸入到服務中之后,我們將擁有一個非常大的HashMap,這可能會導致我們的內存不足。

這是解決這個問題的快速技巧。 除了使用HashMap,還可以使用LinkedHashMap并簡單地覆蓋方法removeEldestEntry。 這樣,您就可以配置自己的限制功能以防止地圖爆炸。

public class PrimeService {public final static int CACHE_MAX_SIZE = 1_000;private Map<Long, BigInteger> cache = new LinkedHashMap<>() {@Overrideprotected boolean removeEldestEntry(Map.Entry<ID, Boolean> eldest) {return size() > PrimeService.CACHE_MAX_SIZE;}};public BigInteger getPrime(long minimum) {return cache.computeIfAbsent(minimum, m -> BigInteger.valueOf(m).nextProbablePrime());}}

現在,我們已經成功限制了緩存,防止了緩存爆炸。 隨著新條目的添加,舊條目將被刪除。 應該注意的是,這種解決方案在小型應用程序中效果很好,但是對于更高級的方案,您可能想使用外部緩存解決方案。 如果您有興趣在不編寫大量SQL代碼的情況下在SQL數據庫中緩存條目,我建議您使用Speedment,因為它是輕量級的并且具有非常流暢的API。

直到下一次!

翻譯自: https://www.javacodegeeks.com/2016/12/quick-tip-prevent-caches-exploding.html

本地緩存防止緩存擊穿

總結

以上是生活随笔為你收集整理的本地缓存防止缓存击穿_防止缓存爆炸的快速提示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。