快取學習總結

2021-09-06 16:19:52 字數 952 閱讀 8583

說明:整個架構學習總結是建立在李運華老師的課程之上。

一、為什麼要使用快取

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快取

在前端面試中,可能或多或少都會被提及快取問題,而這個問題大多數都是作為業務中不得不考慮的乙個效能優化點,如果平時沒有怎麼關注或是特意去了解這塊的童鞋們,可能就是不太了解其中的原由,那麼今天我們就這個快取問題來細細分析,幫助一些還不是太明白的或是剛入門的前端童鞋們梳理梳理,理解理解,那就話不多說,開始...