快取穿透 快取擊穿 快取雪崩

2021-10-03 18:53:24 字數 626 閱讀 2433

資料庫中沒有這條資料,快取中也沒有這條資料(危害:查詢了資料庫,不應該讓他查詢資料庫)

解決:1、快取空物件(簡單,好維護,但是效果不是很好)

當查詢資料庫中沒有這條資料的時候,也把這條資料加入快取,只讓他查詢一次。並且在從redis取出時判斷是否為空物件,返回相應的結果,說明是乙個不存在的資料

問題:第一,可以換乙個key再一次查詢,仍然會查詢資料庫;第二,如果查詢大量的空物件後,在redis中會存在大量的空物件,無用的資料。。雖然簡單,但是解決的力度不是很好。

2、布隆過濾器(難維護,效果很好)

根據預計插入數量和容錯率可以 根據 相應演算法計算出位陣列長度和hash函式個數

key被x個不同的的hash函式進行hash,得到x個數字。然後被位陣列(預設位陣列中的每一位都為0)的長度取餘(取余是為了讓它的下標不大於位陣列的長度),拿到餘數,讓位陣列該位置的值為1。當使用時,判斷其是否可能存在(被hash到的餘數在位陣列上全為1,表示可能存在)。

資料庫中有這條資料,快取中沒有(快取剛好失效)(併發)

解決方案:互斥鎖

1、機器宕機;

解決:高可用集群 rediscluster

2、大部分資料失效(redis中的資料同一時刻失效)

解決:設定過期時間錯開

快取穿透 快取擊穿 快取雪崩

一 快取處理流程 前台請求,後台先從快取中取資料,取到直接返回結果,取不到時從資料庫中取,資料庫取到更新快取,並返回結果,資料庫也沒取到,那直接返回空結果。二 快取穿透 描述 快取穿透是指快取和資料庫中都沒有的資料,而使用者不斷發起請求,如發起為id為 1 的資料或id為特別大不存在的資料。這時的使...

快取穿透,快取擊穿,快取雪崩

所謂的快取穿透,簡單來講就是查詢某些不存在的key時,快取和資料庫查詢結果都為空,而空的結果又不被快取起來,而導致每次查詢都去請求資料庫層的情況。在流量大時,可能db就掛掉了,要是有人利用不存在的key頻繁攻擊我們的應用,這就是漏洞。過程 快取不命中,進而導致每次查詢都去查詢資料庫,快取也就失去了作...

快取穿透快取擊穿快取雪崩

1 快取穿透 1.1 什麼是快取穿透 快取穿透,是指查詢乙個資料庫一定不存在的資料 核心 快取和資料庫該值不存在 正常的使用快取流程大致是,資料查詢先進行快取查詢,如果key不存在或者key已經過期,再對資料庫進行查詢,並把查詢到的物件,放進快取。如果資料庫查詢物件為空,則不放進快取。1.2 帶來的...