快取的一些開胃菜

2021-10-10 16:39:51 字數 1238 閱讀 3399

在服務端程式設計中,快取主要是指將資料庫的資料載入到記憶體中,之後對該資料的訪問都在記憶體中完成,從而減少了對資料庫的訪問,解決了高併發場景中資料庫容器成為效能瓶頸的問題;以及基於記憶體的訪問速度高於磁碟的訪問速度的原理(資料庫讀取資料一般需要從磁碟讀取),提高了資料的訪問速度和程式效能。

基本思想

基本思想就是空間換時間,它對系統的效能提公升的價效比非常高。

快取的思想實際在作業系統被大量用到。比如cpu cache快取的是記憶體資料用於解決cpu處理速度和記憶體不匹配的問題,記憶體快取的是硬碟資料用於解決硬碟訪問速度過慢的問題等等。我們為了避免使用者在請求資料的時候獲取過於緩慢,所以我們選擇在資料庫上面增加了快取這一層。

分類

根據快取是否與應用程序屬於同一程序,可以分為本地快取和分布式快取。實現

優缺點缺點

適用場景

資料一致性要求不高,訪問頻率高,總資料量小,資料不經常變動。

實現

redis

優缺點

缺點 適用場景

​ 在高併發場景或對於較大其不可預見的使用者訪問時,採用分布式快取,如在某些短時熱門活動中可以將redis當做資料庫來用。

快取穿透:指查詢乙個一定不存在的資料,由於快取是不命中,將去查詢資料庫,但資料庫也無此記錄,我們沒有將這次查詢的null寫入快取,這將導致這個不存在的資料每次請求都要到資料庫去查詢,失去了快取的意義。

解決方法

快取雪崩:指在我們設定快取時key採用了相同的過期時間,導致快取在某一時刻同時失效,請求全部**到db,db瞬時壓力過重雪崩。

解決方法

快取擊穿:對於一些設定了過期時間的key,如果這些key可能會在某些時間點被超高併發地訪問,是一種非常「熱點」的資料。如果這個key在大量請求同時進來前正好失效,那麼所有對這個key的資料查詢都落到db。

解決方法

設定熱點資料永不過期:從快取層面來看,沒有設定過期時間,所以不會出現熱點 key 過期後產生的問題。

加互斥鎖:使用分布式鎖,保證對於每個key同時只有乙個執行緒去查詢後端服務,其他執行緒沒有獲得分布式鎖的許可權,因此只需要等待即可。這種方式將高併發的壓力轉移到了分布式鎖,因此對分布式鎖的考驗很大。

開題第一波,開胃菜,簡單的

聯想筆試題 1 設計函式 int atoi char s 2 int i j 4,k 8,l 16,m 32 printf d i 輸出是多少?3 解釋區域性變數 全域性變數和靜態變數的含義。4 解釋堆和棧的區別。5 論述含引數的巨集與函式的優缺點。google 面試題 1.下面哪項不是鍊錶優於陣列...

MID是消費者在移動互聯時代的開胃菜

arm公司中國區總裁 譚軍 mid mobile internet device 就是移動互聯終端,這其實並不是乙個新的概念。nokia n800,n810,市場上可以見到的大螢幕的智慧型 garmin的pnd based smartphone,archos的wifi capable pmp等,都屬...

java的一些快取機制

public static void main string args 結果 true integer1 integer2 integer3 integer4 這種快取行為不僅適用於integer物件。我們針對所有整數型別的類都有類似的快取機制。有 bytecache 用於快取 byte 物件 有 ...