我們面試的時候 ,經常會被問這種到問題:
Redis 常用的業務場景有哪些? 什麼是緩存穿透?怎麼解決?什麼是緩存雪崩? 怎麼解決?等等 在找工作的過程中,對於 Redis 技術知識的掌握已經成為必須的技能。Redis相關的問題一直是大廠面試常問到的一個問題,一直是很多面試者的攔路虎,不知道從哪裡下手,今天舉例分析大廠的一些Redis相關的面試真題。和分享我學習Redis相關問題所整理的一些知識點。阿里面試Redis相關問題(以整理解析)
1.什麼是 Redis 事務?原理是什麼?
Redis 中的事務是一組命令的集合,是 Redis 的最小執行單位,一個事務要麼都執行,要麼都不執行。
Reids 事務保證一個事務內的命令依次執行,而不會被其他命令插入。
Redis 事務的原理是先將屬於一個事務的命令發送給 Redis,然後依次執行這些命令。
2. Redis 常用的命令有哪些?
3.什麼是緩存穿透?怎麼解決?
透是指緩存中查詢一個不存在的數據,需要去數據庫中獲取。
如果數據庫也查不到結果,將不會同步到緩存,導致這個不存在數據每次請求都要到數據庫查詢,失去了緩存的意義。
解決方法有兩個:
1. 布隆過濾(Bloom filter)
將所有查詢的參數都存儲到一個 bitmap 中,在查詢緩存之前,先再找個 bitmap 裡面進行驗證。
如果 bitmap 中存在,則進行底層緩存的數據查詢; 如果 bitmap 中不存在查詢參數,則進行攔截,不再進行緩存的數據查詢。
適用範圍:可以用來實現數據字典,進行數據的判重,或者集合求交集
2. 緩存空對象
如果查詢返回的數據為空,仍然把這個空結果進行緩存。那麼再次用相同 key 獲取數據的時候,即使不存在的數據,緩存也可以直接返回空值,避免重複訪問 DB。
緩存空對象有兩個不足之處:
緩存層將存儲更多的鍵值對,如果是惡意的隨機訪問,將造成很多內存空間的浪費。這個不足之處可以通過將這類數據設置很短的過期時間來控制。
DB 與緩存數據不一致。這種可以考慮通過異步消息來進行數據更新的通知,在一定程度上減少這類不一致的時間。
4.怎麼去發現 Redis 阻塞異常情況?
1. 通過應用服務監控發現
當 Redis 阻塞的時候,線上應用服務應該會感知發現。比如說發現 Redis 鏈接超時等。這種就需要應用服務增加對於異常的統計,並針對 Redis 相關的異常,進行報警。
2. 通過 Redis 自身監控系統
藉助 Redis 監控系統發現阻塞問題,當監控系統發現各個監控指標存在異常的時候,發送報警。 指標有:CPU/內存/磁盤等, 慢查詢,命令耗時增加等。
5.Redis 持久化機制 AOF 和 RDB 有哪些不同之處?
兩者的區別:RDB 持久化是指在指定的時間間隔內將內存中的數據集快照寫入磁盤,實際操作過程是 fork 一個子進程,先將數據集寫入臨時文件,寫入成功後,再替換之前的文件,用二進制壓縮存儲。
AOF 持久化以日誌的形式記錄服務器所處理的每一個寫、刪除操作,查詢操作不會記錄,以文本的方式記錄,可以打開文件看到詳細的操作記錄。
- 為什麼 Redis 需要把所有數據放到內存中?
- Redis 是單線程的嗎?
- Redis 為什麼設計成單線程的?
- 什麼是緩存雪崩? 怎麼解決?
- 緩存的更新策略有幾種?分別有什麼注意事項?
- 請介紹幾個可能導致 Redis 阻塞的原因
- Redis 集群架構模式有哪幾種?
- Redis 集群最大節點個數是多少?
- Redis 集群的主從複製模型是怎樣的?
- 請介紹一下 Redis 集群實現方案
- Redis 集群會有寫操作丟失嗎?為什麼?
- Redis 慢查詢是什麼?通過什麼配置?
只是展示的一部分Redis相關的面試題集,一部分解析,更多的Redis面試整理解析可以看整理的《大廠Redis高頻面試75題解析文檔》,有需要的朋友麻煩幫忙轉發後私信回覆我【面試】即可獲取資料的免費領取方式!
我的Redis學習筆記
對於Redis盲目的學很浪費時間還犯愁,這裡有整理一份Redis學習路線圖(有Xmind源文件筆記)裡面有每個知識點的筆記整理!今天通過我整理的Redis學習路線.xmind給大家分析Redis需要掌握的一些核心知識點。
需要整個Redis學習導圖和核心知識點的朋友可以轉發文章+私信【面試】即可獲取資料的免費領取方式!
數據結構
- 五種數據結構類型
- HyperLogLog
- redis命令大全
Redis的過期策略和內存淘汰策略
Redis集群(Redis cluster)
- 為什麼使用集群
- 數據分佈
- Redis Cluster基本概念
主從複製
- 實現主從複製的兩種方式
- 複製過程
- 數據同步
- 主從節點心跳鏈接
- 缺點
Redis持久化
- RDB(Redis DataBase )
- AOF(Append Only File)
- 如何選擇持久化方案
- fork阻塞:CPU的阻塞
- AOF追加阻塞:硬盤的阻塞
還有更多內容都包含這個Xmind源文件裡了
- redis.conf
- nosql數據庫
- 哨兵模式
- 發佈訂閱
- Redis實現分佈式鎖
我整理的Redis學習視頻及筆記文檔
需要這些Redis學習資料的朋友可以轉發文章+私信【面試】即可獲取資料的免費領取方式!
閱讀更多 JavaSpring高級進階 的文章