Redis面試複習大綱在手面試不慌,原創Kafka學習筆記
虛驚一場,差點掛在美團三面,罪魁禍首居然竟是“Redis”?
在找工作的過程中,對於 Redis 技術知識的掌握已經成為必須的技能。美團面試常常就會被問到Redis相關知識,而這次我就差點掛在了美團3面,面試官連問我以下幾個Redis的問題,然後就卡殼了...
- redis瞭解嗎?Redis key 的過期策略Redis瞭解嗎?你說說怎麼用redis實現分散式鎖?
- Redis常用資料結構及底層資料結構實現
- 如何解決 Redis 的併發競爭 Key 問題
- 如何保證快取與資料庫雙寫時的資料一致性?
- Redis 持久化有哪幾種方式,怎麼選?
- Redis 的 zset 怎麼實現的?
- Redis 主從同步是怎樣的過程?
- ... ...(剩下的不太記得了...為此面試完回來針Redis專門做了一個大總結)
01 Redis面試問題常見劃分(6個部分,附帶完整的答案解析)
第一部分:Redis 的概念理解
第二部分:Redis 資料結構與指令
第三部分:Redis 高併發處理策略
第四部分:Redis 叢集結構以及設計理念
第五部分:Redis 快取管理與持久化機制
第六部分:Redis 應用場景設計注意:前面例舉了所有的問題,在先不看解析的條件下,可先自行試水。。解析在最後。。
筆記是全程手寫出來的,希望大家拿到筆記後別丟進收藏夾吃灰!
1.1 Redis面試問題:第一部分:Redis 的概念理解
- 什麼是 Redis?
- Redis 的特點有哪些?
- Memcache 與 Redis 的區別都有哪些?
- Redis 相比 Memcached 有哪些優勢?
- 如何實現本地快取?請描述一下你知道的方式
- Redis 通訊協議是什麼?有什麼特點?
1.2 Redis面試問題:第二部分:Redis 資料結構與指令
- Redis 支援的資料型別
- Redis 常用的命令有哪些?
- 一個字串型別的值能儲存最大容量是多少?
- Redis 各個資料型別最大儲存量分別是多少?
- 請介紹一下 Redis 的資料型別 SortedSet(zset)以及底層實現機制?
- Redis 事務相關命令有哪些?
- 什麼是 Redis 事務?原理是什麼?
- Redis 事務的注意點有哪些?
- Redis 為什麼不支援回滾?
- 請介紹一下 Redis 的 Pipeline(管道),以及使用場景
- 請說明一下 Redis 的批量命令與 Pipeline 有什麼不同?
- 請介紹一下 Redis 的釋出訂閱功能
- Redis 的連結串列資料結構的特徵有哪些?
- 請介紹一下 Redis 的 String 型別底層實現?
- Redis 的 String 型別使用 SSD 方式實現的好處?
- 設定鍵的生存時間和過期時間有哪些命令?
1.3 Redis面試問題:第二部分:第三部分:Redis 高併發處理策略
- 為什麼 Redis 需要把所有資料放到記憶體中?
- Redis 是單執行緒的嗎?
- Redis 為什麼設計成單執行緒的?
- 什麼是快取穿透?怎麼解決?
- 什麼是快取雪崩? 怎麼解決?
- 快取的更新策略有幾種?分別有什麼注意事項?
- 請介紹幾個可能導致 Redis 阻塞的原因
- 怎麼去發現 Redis 阻塞異常情況?
1.4 Redis面試問題:第二部分:第四部分:Redis 叢集結構以及設計理念
- Redis 叢集架構模式有哪幾種?
- Redis 叢集最大節點個數是多少?
- Redis 叢集的主從複製模型是怎樣的?
- 請介紹一下 Redis 叢集實現方案
- Redis 叢集會有寫操作丟失嗎?為什麼?
- Redis 慢查詢是什麼?通過什麼配置?
- Redis 的慢查詢修復經驗有哪些?怎麼修復的?
- 如何優化 Redis 服務的效能?
- Redis 的主從複製模式有什麼優缺點?
- Redis sentinel(哨兵)模式優缺點有哪些?
- 如何設定 Redis 的最大連線數?檢視 Redis 的最大連線數?檢視 Redis 的當前
- 介紹一些 Redis 常用的安全設定?
1.5 Redis面試問題:第二部分:第五部分:Redis 快取管理與持久化機制
- Redis 持久化機制有哪些?
- Redis 持久化機制 AOF 和 RDB 有哪些不同之處?
- 請介紹一下 RDB 持久化機制的優缺點
- 請介紹一下 AOF 持久化機制的優缺點
- 如果 AOF 檔案的資料出現異常, Redis 服務怎麼處理?
- 常見的淘汰演算法有哪些?
- Redis 淘汰策略有哪些?
- Redis 快取失效策略有哪些?
- Redis 如何做記憶體優化?
- 什麼是 bigkey? 有什麼影響?
- 怎麼發現 bigkey?
- Redis 的記憶體消耗分類有哪些?記憶體統計使用什麼命令?
- 簡單介紹一下 Redis 的記憶體管理方式有哪些?
- 如何設定 Redis 的記憶體上限?有什麼作用?
- Redis 報記憶體不足怎麼處理?
1.6 Redis面試問題:第六部分:Redis 應用場景設計
- Redis 適用場景有哪些?
- Redis 常用的業務場景有哪些?
- Redis 支援的 Java 客戶端有哪些? 簡單說明一下特點。
- 請簡單描述一下 Jedis 的基本使用方法?
- Jedis 連線池連結方法有什麼優點?
- 什麼是分散式鎖?有什麼作用?
- 分散式鎖可以通過什麼來實現?
- 介紹一下分散式鎖實現需要注意的事項?
- Redis 怎麼實現分散式鎖?
- 快取命中率表示什麼?
- 怎麼提高快取命中率?
- 請介紹一下 Spring 註解快取
總共是從Redis的概念理解、資料結構與指令、高併發處理策略、叢集結構以及設計理念、快取管理與持久化機制、應用場景設計等六大部分整理了以上的70高頻問,答案解析總共是有25頁(如下圖所示),篇幅有限沒法全部在文章中寫上(後面還有手寫筆記等),但是可以分享給需要的朋友
02 一份純手寫的Redis筆記
這是從朋友那裡拿過來的,看了之後感覺還是挺不錯的。整個筆記分為五個部分: 第一部分:Redis基礎篇 第二部分:Redis資料結構篇 第三部分:Redis持久化篇 第四部分:Redis叢集篇 第五部分:Redis的其他問題
2.1 第一部分:Redis基礎篇
- 什麼是Redis ?mRedis優缺點
- 為什麼要用快取?為什麼使用Redis?
- 使用快取會出現什麼問題?
- Redis為什麼早期版本選擇單執行緒?
- Redis為什麼這麼快?
2.2 第二部分:Redis資料結構篇
- Redis常用資料結構及實現?
- Redis 的 SDS 和C中字串相比的優勢?
- 字典是如何實現的? Rehash瞭解嗎?
- 跳躍表是如何實現的?原理?
- HyperLogLog有了解嗎?
- 布隆過濾器有了解嗎?
- GeoHash瞭解嗎?
- 壓縮列表瞭解嗎?
- 快速列表quicklist瞭解嗎?
- Stream結構有了解嗎?
2.3 第三部分:Redis持久化篇
- 什麼是持久化?
- Redis中的兩種持久化方式?
- RDB和AOF各自有什麼優缺點?
- 兩種方式如何選擇?
- Redis 的資料恢復
2.4 第四部分:Redis叢集篇
- 主從同步瞭解嗎?
- 哨兵模式瞭解嗎?
- Redis叢集使用過嗎?原理?
- 叢集中資料如何分割槽?
- 節點之間的通訊機制瞭解嗎?
- 叢集資料如何儲存的有了解嗎?
2.5 第五部分:Redis的其他問題
- Redis 如何實現分散式鎖?
- Redis過期鍵的刪除策略?
- Redis的淘汰策略有哪些?
- Redis常見效能問題和解決方案?
03 Redis進階必看:《Redis實戰》+《Redis設計與實現》
3.1 《Redis實戰》
深入淺出地介紹了Redis的5種資料型別,並通過多個實用示例展示了Redis用法。除此之外,還講述了Redis 的優化方法以及擴充套件方法,對於學習和使用Redis來說不可多得的參考筆記。
本筆記一共由三個部分組成:
第一部分 入門:對Redis進行了介紹,說明了Redis 的基本使用方法、它擁有的5種資料結構以及操作這5種資料結構的命令,並講解了如何使用Redis去構建文章聚合網站、cookie、購物車、網頁快取、資料庫行快取等一系列程式;
- 第1章 初識Redis
- 第2章 使用Redis構建Web應用
第二部分 核心概念: 對Redis命令進行了更詳細的介紹,並展示瞭如何使用Redis去構建更為複雜的輔助工具和應用程式,並在最後展示瞭如何使用Redis去構建一個簡單的社交網站;
- 第3章 Redis命令
- 第4章 資料安全與效能保障
- 第5章 使用Redis構建支援程式
- 第6章 使用Redis構建應用程式元件
- 第7章 基於搜尋的應用程式
- 第8章 構建簡單的社交網站
第三部分 進階內容:對Redis使用者經常會遇到的一些問題進行了介紹,講解了降低Redis記憶體佔用的方法、擴充套件Redis效能的方法以及使用Lua語言進行指令碼程式設計的方法;
- 第9章 降低記憶體佔用
- 第10章 擴充套件Redis
- 第11章 Redis的Lua指令碼程式設計
最後
針對以上面試題,小編已經把面試題+答案整理好了
面試專題
除了以上面試題+答案,小編同時還整理了微服務相關的實戰文件也可以分享給大家學習
?