分布式快取和Redis面試總結

2021-09-25 12:01:27 字數 1112 閱讀 6775

lru(最近最少使用)演算法實現:可以使用乙個有序的單鏈表來實現。當有乙個新的資料被訪問時,如果存在於單鏈表之中,則直接讀取該資料,然後把該節點插入鍊錶頭部。如果不存在單鏈表之中,先判斷是否還有快取,如果有則將該節點插入單鏈表的頭部,如果沒有先刪除單鏈表尾部的節點,然後再將節點插入到單鏈表頭部。

引入快取常見的問題:快取穿透、雪崩、擊穿、資料一致性。

快取穿透解決方案:快取空物件;布隆過濾器。

快取雪崩解決方案:快取高可用;本地快取;請求db限流;服務降級。

快取擊穿解決方案(針對乙個key,真實存在):使用互斥鎖;手動過期。

資料一致性相關:

產生的原因:併發場景下讀取老db更新到快取;快取和db的操作不在乙個事務,乙個成功乙個失敗。

解決方案:todo

優點:速度快;支援持久化儲存;支援豐富的資料型別;豐富的特性。

支援的資料型別:string、list、set、sorted set、hash

效率高的原因:完全記憶體的操作;非阻塞的io多路復用;單執行緒操作避免了上下文切換;hash

持久化的方式:rdb(全量)和aof(增量)

過期策略:主動刪除;被動刪除;maxmemory

淘汰策略:volatile-lru;volatile-ttl;volatile-random;allkeys-lru;allkeys-random;no-enviction;

實現分布式鎖:set指令;redlock

實現訊息佇列:用list結構實現,rpush 生產訊息,lpop 消費訊息。

為什麼用跳表不用紅黑樹:redis主要的操作有插入單個資料、刪除單個資料、查詢單個資料、查詢某個區間的資料,對於前三個操作來說紅黑樹和跳表差不多,但是對於第四個操作,跳表明顯優於紅黑樹。

Redis 分布式快取

1 官網 3 菜鳥教程 4 redis的集群教程 5 史上最全redis高可用技術解決方案大全 一 redis的特點?redis 本質上是乙個 key value 型別的記憶體資料庫,很像 memcached,整個 資料庫統統載入在記憶體當中進行操作,定期通過非同步操作把資料庫資料 flush 到硬...

分布式快取Memcache和Redis

針對於現在計算機的cpu和網路設施,對應用程式來說,執行效率的瓶頸,已經不是 的長度 實現同乙個功能 和頻寬了,而是,訪問資源的過程,即 讓我們的程式慢下來的罪魁禍首就是io操作。程式從硬碟上讀取資料是乙個非常花費時間的操作,因為我們現在所使用的硬碟是機械式的,你想機械的執行速度和電的速度,那是乙個...

Redis分布式快取簡介

一 什麼是redis redis是乙個開源的,基於記憶體儲存的資料伺服器。可以用來充當資料庫,快取記憶體和訊息佇列 redis支援很多的資料結構,包括字串 雜湊表 列表 集合 有序集合,位圖 hyperloglogs等。redis突出的乙個特性是效能容量高。儲存在redis中的資料是持久化的,斷電或...