快取穿透:查詢必然不存在的資料,請求透過快取,直擊資料庫
快取雪崩:大量的key設定了相同的過期時間,導致在快取在同一時刻全部失效,造成瞬時db請求量大、壓力驟增,引起雪崩
快取擊穿:乙個存在的key,在快取過期的一刻,同時有大量的請求。直擊資料庫
順便說兩個概念加深一下記憶
tps:資料庫美妙執行的事務數
qps:資料庫每秒執行的sql數量
讀多寫少用快取,寫多讀少用佇列
1.非法請求,引數校驗(長度等)
2.快取臨時的空資料,設定有效期
記憶體占用可能非常高
可以採用合適的演算法,來檢索集合中是否存在某個元素
目的:減少方案2的記憶體占用
思路:不儲存所有的id資訊,直在記憶體中做乙個標記
–
布隆過濾器(bollm filter)
很長的二進位制數組合一系列hash函式
可用於檢索乙個元素是否在乙個集合中。
空間效率和查詢時間都比一般的演算法要好。
缺點是有一定的誤識別率和刪除困難
實現: 二進位制陣列構建過程
1.載入符合條件的記錄
2.計算每條元素的hash值
3.計算hash值對應二進位制陣列的位置
4.將對應的位置的值改為1
可利用redis的特性:bigmaps(setbit設定指定位置的值、getbit獲取值)
redis自帶的二進位制陣列特性
優點:記憶體空間占用少。
缺點:取藥不斷的維護,帶來新的工作
並不能精準過濾(判定不存在,100%不存在,判斷存在,擇可能不存在)
並非攔截所有請求,意在將快取穿透控制在一定的量
快取穿透問題及解決方案
快取穿透也被稱為 擊穿 很多朋友對快取穿透的理解是 由於快取故障或者快取過期導致大量請求穿透到後端資料庫伺服器,從而對資料庫造成巨大衝擊。這其實是一種誤解。真正的快取穿透應該是這樣的 在高併發場景下,如果某乙個key被高併發訪問,沒有被命中,出於對容錯性考慮,會嘗試去從後端資料庫中獲取,從而導致了大...
ajax 快取問題及解決方案
當請求的路徑 引數名 引數值三者都沒有發生變化時,瀏覽器將不會再傳送此請求,只有這三者其中任意乙個發生變化時 變化的一般只有引數值 瀏覽器才會再次向伺服器傳送請求!快取測試 總共四次請求 文字框中沒有值 http localhost 8070 demo getjson.do?operation 請求...
常見快取問題及解決方案
概念 增加節點機器,效能沒有提公升反而下降了。以使用者為例 user 133 age,user 133 name,user 133 height n個ke,當伺服器增多的時候,133號使用者的資訊,也被更散落在更多的節點上,所以,同樣是訪問個人主頁,得到相同的個人資訊,節點越多,要連線的節點也越多,...