快取的面試問題
快取的面試問題有很多,我個人總結大概有下面幾點,你可以從這些方面作為面試參考。
1.為什麼選用快取?這個可以高效能高併發的方面回答面試官,由於快取資料儲存在記憶體中,其相對IO操作要快的多,而且記憶體天然就支撐高併發。
2.使用快取做了什麼?這個根據自己的專案的業務場景去回答,比如應對高併發訪問熱點資料,減輕資料庫的壓力;比如充當分散式鎖,保證執行緒安全;比如充當訊息佇列;比如充當計數器;比如解決分散式應用中的共享Session問題。
3.快取為什麼快?可以從下面幾點去回答:首先其資料儲存在記憶體中,其次採用單執行緒避免上下文切換,還有使用多路I/O複用模型,非阻塞IO,以及一些底層的模型設計。
4.快取的資料備份問題?這裡可以有以下的相關問題,比如備份方式:Redis預設採用Rdb方式備份,符合設定的條件時redis會將記憶體中的所有資料自動生成一份副本儲存到硬碟上,可以透過配置檔案開啟AOF備份。比如兩種備份的區別:AOF持久化儲存的資料更完整一些,但是同時會帶來效能上的損耗。
5.快取穿透問題?訪問一個不存在的 key,快取不起作用,請求會落到資料庫上,如果請求量很大,資料庫有可能會掛掉。解決方案:快取空值,布隆過濾器,互斥鎖排隊。
6.快取雪崩問題?快取在同一時間內大量鍵過期(失效),接著來的一大波請求瞬間都落在了資料庫中導致連線異常。解決方案:互斥鎖排隊,分散失效時間。
7.快取無底洞問題?叢集節點加機器效能沒能提升,反而下降。解決方案:採用雜湊一致性辦法,將特定資料存在指定的快取
快取的面試問題
快取的面試問題有很多,我個人總結大概有下面幾點,你可以從這些方面作為面試參考。
1.為什麼選用快取?這個可以高效能高併發的方面回答面試官,由於快取資料儲存在記憶體中,其相對IO操作要快的多,而且記憶體天然就支撐高併發。
2.使用快取做了什麼?這個根據自己的專案的業務場景去回答,比如應對高併發訪問熱點資料,減輕資料庫的壓力;比如充當分散式鎖,保證執行緒安全;比如充當訊息佇列;比如充當計數器;比如解決分散式應用中的共享Session問題。
3.快取為什麼快?可以從下面幾點去回答:首先其資料儲存在記憶體中,其次採用單執行緒避免上下文切換,還有使用多路I/O複用模型,非阻塞IO,以及一些底層的模型設計。
4.快取的資料備份問題?這裡可以有以下的相關問題,比如備份方式:Redis預設採用Rdb方式備份,符合設定的條件時redis會將記憶體中的所有資料自動生成一份副本儲存到硬碟上,可以透過配置檔案開啟AOF備份。比如兩種備份的區別:AOF持久化儲存的資料更完整一些,但是同時會帶來效能上的損耗。
5.快取穿透問題?訪問一個不存在的 key,快取不起作用,請求會落到資料庫上,如果請求量很大,資料庫有可能會掛掉。解決方案:快取空值,布隆過濾器,互斥鎖排隊。
6.快取雪崩問題?快取在同一時間內大量鍵過期(失效),接著來的一大波請求瞬間都落在了資料庫中導致連線異常。解決方案:互斥鎖排隊,分散失效時間。
7.快取無底洞問題?叢集節點加機器效能沒能提升,反而下降。解決方案:採用雜湊一致性辦法,將特定資料存在指定的快取