日常專案中快取穿透處理

2022-09-20 21:06:14 字數 815 閱讀 4384

說起快取穿透,大家都知道, 真正在使用過程中,很少有人感覺會快取穿透, 其實在我們日常開發過程中,不知不覺 你就寫了個bug , 下邊是我們開發中發現的一種快取穿透寫法, 僅供參考:

/*

錯誤寫法示例

* * 解讀:

* * 當 $data_list 查詢結果為空時候, 會導致 msgpack_pack 壓縮後 儲存快取結果為空

* 從快取取出資料時候, msgpack_unpack 解壓後,資料也是空值,從而導致 一直無法命中快取,

*/public

static

function getlist()

return

$data_list;

}

/*

正確寫法

* 解讀

* * 當取出 不存在的 $cache_key 結果會返回 false ,此時查詢db , 如果db返回空,存入 redis

* 第二次查詢 $cache_key ,快取key存在,但是結果為空,直接返回, 從而避免 重複查詢db

* * 也可以使用 $redis->exists($cache_key) 去判定

*/public

static

function getalladownerignoreusertypelist()

else

return

$data_list;

}

作品採用: 《 署名-非商業性使用-相同方式共享 4.0 國際 (cc by-nc-sa 4.0) 》許可協議授權

快取穿透處理

如圖,乙個正常的請求一般都會經過cache層再到storage層,如果cache層沒有而在storage層查到,則將資料新增到cache層後返回,下次再有同樣的請求則直接從cache層返回資料,無需再請求storage層 而如果在storage層也獲取不到資料,則沒有資料新增到cache裡,下次再有...

快取穿透和快取擊穿處理

為了應對越來越大的流量,快取便成為系統服務必不可少的一部分,但使用快取就會出現快取擊穿和快取穿透的威脅。背景介紹 網際網路應用逐步深入到生活的各個角落,為了滿足越來越多使用者使用網際網路應用的需求,幾乎所有網際網路公司都採用快取的方案來解決瞬時流量超高,或者長期流量過高的問題。但使用快取存在風險 快...

redis 快取穿透 快取雪崩處理方案

一 快取穿透 什麼是快取穿透 訪問某一key的時候,該key不在redis中,也不在db中,因此當非法使用者頻繁請求該key的時候,每一次請求,都直接穿過了redis,都最終落在的db上,從而造成宕機,影響整個系統,這種現象稱之為快取穿透 處理方案 二 快取雪崩 什麼是快取雪崩 每乙個key存在過期...