說明:整個架構學習總結是建立在李運華老師的課程之上。
一、為什麼要使用快取
1.關聯式資料庫儲存的是行記錄,無法儲存資料結構
2.關聯式資料庫的 schema 擴充套件很不方便
3.關聯式資料庫在大資料場景下 i/o 較高,效能問題
4.關聯式資料庫的全文搜尋功能比較弱
針對上述問題,分別誕生了不同的 nosql 解決方案。
二、nosql分類
1.k-v 儲存:解決關聯式資料庫無法儲存資料結構的問題。redis
2.文件資料庫:解決關聯式資料庫強 schema 約束的問題。一般主要儲存json格式。但不支援事物和json查詢。 mognodb
3.列式資料庫:解決關聯式資料庫大資料場景下的 i/o 問題,hbase
4.全文搜尋引擎:解決關聯式資料庫的全文搜尋效能問題,以 elatiscsearch
三、高效能快取架構帶來的複雜問題
1.快取穿透:
快取穿透是指查詢的資料快取中沒有。
1.1可能是資料庫沒有。也可能是剛被淘汰還未生成資料到快取。
解決辦法:1.將對應的key設定預設值。2.預先生產快取資料。
2.快取雪崩:
高併發下多個執行緒同時去生成快取,給儲存系統帶來很大的壓力。導致資料庫宕機,產生連鎖反應。
解決辦法:
1.更新增加全域性鎖
2.後台程式更新。
3.快取熱點
單快取服務壓力過大
解決辦法:搭建整合服務
4.高併發下資料一致性:
在高併發下保證快取和資料的資料一性有已下問題:資料變更,先淘汰快取然後修改資料庫,但是在淘汰完快取正準備寫資料庫時又有乙個請求過來,發現快取沒有則從資料庫查詢出久資料放入了快取。
如果先更新資料庫再淘汰快取可能會出現資料庫更新成功,但快取淘汰失敗,這時資料也不相同。
解決辦法:二次淘汰或放快取和更新資料序列化(乙個佇列裡處理,並根據唯一標識去重複)。
本地快取DiskLruCache學習總結
第乙個指快取位址,第二個是版本號,第三個是乙個key可以快取檔案的個數,第四個是快取的最多位元組的資料。開起乙個disklrucache的方法 disklrucache mdisklrucache null try catch ioexception e catch nosuchalgorithme...
MyBatis學習總結(八) 快取機制
mybatis提供了快取機制減輕資料庫壓力,提高資料庫效能 mybatis的快取分為兩級 一級快取 二級快取 一級快取是sqlsession級別的快取,快取的資料只在sqlsession內有效 一級快取 mybatis的一級快取是sqlsession級別的快取,在運算元據庫的時候需要先建立sqlse...
前端快取總結 HTTP快取
在前端面試中,可能或多或少都會被提及快取問題,而這個問題大多數都是作為業務中不得不考慮的乙個效能優化點,如果平時沒有怎麼關注或是特意去了解這塊的童鞋們,可能就是不太了解其中的原由,那麼今天我們就這個快取問題來細細分析,幫助一些還不是太明白的或是剛入門的前端童鞋們梳理梳理,理解理解,那就話不多說,開始...