'備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生'
前言
前言
八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。
說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?
前言
八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。
說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?
經過很多數粉絲面試過後的反饋,Java面試重點如下:
數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題免費分享給大家,文末有獲取地址!
前言
八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。
說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?
經過很多數粉絲面試過後的反饋,Java面試重點如下:
數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題免費分享給大家,文末有獲取地址!
今天下面就列舉的是Redis的相關面試問題,看看你是否能答出來。
- 什麼是 Redis?簡述它的優缺點?
- Redis 與 memcached 相比有哪些優勢?
- Redis 支持哪幾種數據類型?
- Redis 主要消耗什麼物理資源?
- Redis 有哪幾種數據淘汰策略?
- Redis 官方為什麼不提供 Windows 版本?
- 一個字符串類型的值能存儲最大容量是多少?
- 為什麼 Redis 需要把所有數據放到內存中?
- Redis 集群方案應該怎麼做?都有哪些方案?
- Redis 集群方案什麼情況下會導致整個集群不可用?
- Redis 有哪些適合的場景?
- Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
- Redis 和 Redisson 有什麼關係?
- Jedis 與 Redisson 對比有什麼優缺點?
- 說說 Redis 哈希槽的概念?
- Redis 集群的主從複製模型是怎樣的?
- Redis 集群會有寫操作丟失嗎?為什麼?
- Redis 集群之間是如何複製的?
- Redis 集群最大節點個數是多少?
- Redis 集群如何選擇數據庫?
- Redis 中的管道有什麼用?
- 怎麼理解 Redis 事務?
- Redis 事務相關的命令有哪幾個?
- Redis key 的過期時間和永久有效分別怎麼設置?
- Redis 如何做內存優化?
- Redis 回收進程如何工作的?
- 上述 Redis 分佈式鎖的缺點
- 使用過 Redis 分佈式鎖麼,它是怎麼實現的?
- 使用過 Redis 做異步隊列麼,你是怎麼用的?有什麼缺點?
- 什麼是緩存穿透?如何避免?什麼是緩存雪崩?何如避免?
- redis 和 memcached 什麼區別?為什麼高併發下有時單線程的 redis 比多線程的 memcached 效率要高?
- redis 主從複製如何實現的?redis 的集群模式如何實現?redis 的 key 是如何尋址的?
- 使用 redis 如何設計分佈式鎖?說一下實現思路?使用 zk 可以嗎?如何實現?這兩種有什麼區別?
- 知道 redis 的持久化嗎?底層如何實現的?有什麼優點缺點?
- redis 過期策略都有哪些?LRU 算法知道嗎?寫一下 java 代碼實現?
- 緩存穿透、緩存擊穿、緩存雪崩解決方案?
- 在選擇緩存時,什麼時候選擇 redis,什麼時候選擇 memcached
- 緩存與數據庫不一致怎麼辦
- 主從數據庫不一致如何解決
- Redis 常見的性能問題和解決方案
- Redis 的數據淘汰策略有哪些
- Redis 當中有哪些數據結構
- 假如 Redis 裡面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,如 果將它們全部找出來?
- 使用 Redis 做過異步隊列嗎,是如何實現的
- Redis 如何實現延時隊列
面試答案
1、什麼是 Redis?簡述它的優缺點?
Redis 的全稱是:Remote Dictionary.Server,本質上是一個 Key-Value 類型的內存數據庫,很像memcached,整個數據庫統統加載在內存當中進行操作,定期通過異步操作把數據庫數據 flush 到硬盤上進行保存。
因為是純內存操作,Redis 的性能非常出色,每秒可以處理超過 10 萬次讀寫操作,是已知性能最快的Key-Value DB。
Redis 的出色之處不僅僅是性能,Redis 最大的魅力是支持保存多種數據結構,此外單個 value 的最大限制是 1GB,不像 memcached 只能保存 1MB 的數據,因此 Redis 可以用來實現很多有用的功能。
比方說用他的 List 來做 FIFO 雙向鏈表,實現一個輕量級的高性 能消息隊列服務,用他的 Set 可以做高性能的 tag 系統等等。
另外 Redis 也可以對存入的 Key-Value 設置 expire 時間,因此也可以被當作一 個功能加強版的
memcached 來用。 Redis 的主要缺點是數據庫容量受到物理內存的限制,不能用作海量數據的高性能讀寫,因此 Redis 適合的場景主要侷限在較小數據量的高性能操作和運算上。
2、Redis 與 memcached 相比有哪些優勢?
1.memcached 所有的值均是簡單的字符串,redis 作為其替代者,支持更為豐富的數據類型
2.redis 的速度比 memcached 快很多 redis 的速度比 memcached 快很多
3.redis 可以持久化其數據 redis 可以持久化其數據
3、Redis 支持哪幾種數據類型?
String、List、Set、Sorted Set、hashes
4、Redis 主要消耗什麼物理資源?
內存 。
5、Redis 有哪幾種數據淘汰策略?
1.noeviction:返回錯誤當內存限制達到,並且客戶端嘗試執行會讓更多內存被使用的命令。
2.allkeys-lru: 嘗試回收最少使用的鍵(LRU),使得新添加的數據有空間存放。
3.volatile-lru: 嘗試回收最少使用的鍵(LRU),但僅限於在過期集合的鍵,使得新添加的數據有空間存放。
4.allkeys-random: 回收隨機的鍵使得新添加的數據有空間存放。
5.volatile-random: 回收隨機的鍵使得新添加的數據有空間存放,但僅限於在過期集合的鍵。
6.volatile-ttl: 回收在過期集合的鍵,並且優先回收存活時間(TTL)較短的鍵,使得新添加的數據有空間存放。
6、Redis 官方為什麼不提供 Windows 版本?
因為目前 Linux 版本已經相當穩定,而且用戶量很大,無需開發 windows 版本,反而會帶來兼容性等問題。
7、一個字符串類型的值能存儲最大容量是多少?
512M
8、為什麼 Redis 需要把所有數據放到內存中?
Redis 為了達到最快的讀寫速度將數據都讀到內存中,並通過異步的方式將數據寫入磁盤。
所以 redis 具有快速和數據持久化的特徵,如果不將數據放在內存中,磁盤 I/O 速度為嚴重影響 redis 的性能。
在內存越來越便宜的今天,redis 將會越來越受歡迎, 如果設置了最大使用的內存,則數據已有記錄數達到內存限值後不能繼續插入新值。
9、Redis 集群方案應該怎麼做?都有哪些方案?
1.codis
2.目前用的最多的集群方案,基本和 twemproxy 一致的效果,但它支持在節點數量改變情況下,舊節點數據可恢復到新 hash 節點。
redis cluster3.0 自帶的集群,特點在於他的分佈式算法不是一致性 hash,而是 hash 槽的概念,以及自身支持節點設置從節點。具體看官方文檔介紹。
3.在業務代碼層實現,起幾個毫無關聯的 redis 實例,在代碼層,對 key 進行 hash 計算,然後去對應的redis 實例操作數據。這種方式對 hash 層代碼要求比較高,考慮部分包括,節點失效後的替代算法方案,數據震盪後的自動腳本恢復,實例的監控,等等。
10、Redis 集群方案什麼情況下會導致整個集群不可用?
有 A,B,C 三個節點的集群,在沒有複製模型的情況下,如果節點 B 失敗了,那麼整個集群就會以為缺少5501-11000 這個範圍的槽而不可用。
由於篇幅限制,太長看下去會很乏味,也會影響閱讀體驗,下面展現將以圖片形式展示。獲取原文件以及更多資源請關注轉發分享後,後臺私信回覆【Redis】獲取原文件領取地址。
前言
八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。
說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?
經過很多數粉絲面試過後的反饋,Java面試重點如下:
數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題免費分享給大家,文末有獲取地址!
今天下面就列舉的是Redis的相關面試問題,看看你是否能答出來。
- 什麼是 Redis?簡述它的優缺點?
- Redis 與 memcached 相比有哪些優勢?
- Redis 支持哪幾種數據類型?
- Redis 主要消耗什麼物理資源?
- Redis 有哪幾種數據淘汰策略?
- Redis 官方為什麼不提供 Windows 版本?
- 一個字符串類型的值能存儲最大容量是多少?
- 為什麼 Redis 需要把所有數據放到內存中?
- Redis 集群方案應該怎麼做?都有哪些方案?
- Redis 集群方案什麼情況下會導致整個集群不可用?
- Redis 有哪些適合的場景?
- Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
- Redis 和 Redisson 有什麼關係?
- Jedis 與 Redisson 對比有什麼優缺點?
- 說說 Redis 哈希槽的概念?
- Redis 集群的主從複製模型是怎樣的?
- Redis 集群會有寫操作丟失嗎?為什麼?
- Redis 集群之間是如何複製的?
- Redis 集群最大節點個數是多少?
- Redis 集群如何選擇數據庫?
- Redis 中的管道有什麼用?
- 怎麼理解 Redis 事務?
- Redis 事務相關的命令有哪幾個?
- Redis key 的過期時間和永久有效分別怎麼設置?
- Redis 如何做內存優化?
- Redis 回收進程如何工作的?
- 上述 Redis 分佈式鎖的缺點
- 使用過 Redis 分佈式鎖麼,它是怎麼實現的?
- 使用過 Redis 做異步隊列麼,你是怎麼用的?有什麼缺點?
- 什麼是緩存穿透?如何避免?什麼是緩存雪崩?何如避免?
- redis 和 memcached 什麼區別?為什麼高併發下有時單線程的 redis 比多線程的 memcached 效率要高?
- redis 主從複製如何實現的?redis 的集群模式如何實現?redis 的 key 是如何尋址的?
- 使用 redis 如何設計分佈式鎖?說一下實現思路?使用 zk 可以嗎?如何實現?這兩種有什麼區別?
- 知道 redis 的持久化嗎?底層如何實現的?有什麼優點缺點?
- redis 過期策略都有哪些?LRU 算法知道嗎?寫一下 java 代碼實現?
- 緩存穿透、緩存擊穿、緩存雪崩解決方案?
- 在選擇緩存時,什麼時候選擇 redis,什麼時候選擇 memcached
- 緩存與數據庫不一致怎麼辦
- 主從數據庫不一致如何解決
- Redis 常見的性能問題和解決方案
- Redis 的數據淘汰策略有哪些
- Redis 當中有哪些數據結構
- 假如 Redis 裡面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,如 果將它們全部找出來?
- 使用 Redis 做過異步隊列嗎,是如何實現的
- Redis 如何實現延時隊列
面試答案
1、什麼是 Redis?簡述它的優缺點?
Redis 的全稱是:Remote Dictionary.Server,本質上是一個 Key-Value 類型的內存數據庫,很像memcached,整個數據庫統統加載在內存當中進行操作,定期通過異步操作把數據庫數據 flush 到硬盤上進行保存。
因為是純內存操作,Redis 的性能非常出色,每秒可以處理超過 10 萬次讀寫操作,是已知性能最快的Key-Value DB。
Redis 的出色之處不僅僅是性能,Redis 最大的魅力是支持保存多種數據結構,此外單個 value 的最大限制是 1GB,不像 memcached 只能保存 1MB 的數據,因此 Redis 可以用來實現很多有用的功能。
比方說用他的 List 來做 FIFO 雙向鏈表,實現一個輕量級的高性 能消息隊列服務,用他的 Set 可以做高性能的 tag 系統等等。
另外 Redis 也可以對存入的 Key-Value 設置 expire 時間,因此也可以被當作一 個功能加強版的
memcached 來用。 Redis 的主要缺點是數據庫容量受到物理內存的限制,不能用作海量數據的高性能讀寫,因此 Redis 適合的場景主要侷限在較小數據量的高性能操作和運算上。
2、Redis 與 memcached 相比有哪些優勢?
1.memcached 所有的值均是簡單的字符串,redis 作為其替代者,支持更為豐富的數據類型
2.redis 的速度比 memcached 快很多 redis 的速度比 memcached 快很多
3.redis 可以持久化其數據 redis 可以持久化其數據
3、Redis 支持哪幾種數據類型?
String、List、Set、Sorted Set、hashes
4、Redis 主要消耗什麼物理資源?
內存 。
5、Redis 有哪幾種數據淘汰策略?
1.noeviction:返回錯誤當內存限制達到,並且客戶端嘗試執行會讓更多內存被使用的命令。
2.allkeys-lru: 嘗試回收最少使用的鍵(LRU),使得新添加的數據有空間存放。
3.volatile-lru: 嘗試回收最少使用的鍵(LRU),但僅限於在過期集合的鍵,使得新添加的數據有空間存放。
4.allkeys-random: 回收隨機的鍵使得新添加的數據有空間存放。
5.volatile-random: 回收隨機的鍵使得新添加的數據有空間存放,但僅限於在過期集合的鍵。
6.volatile-ttl: 回收在過期集合的鍵,並且優先回收存活時間(TTL)較短的鍵,使得新添加的數據有空間存放。
6、Redis 官方為什麼不提供 Windows 版本?
因為目前 Linux 版本已經相當穩定,而且用戶量很大,無需開發 windows 版本,反而會帶來兼容性等問題。
7、一個字符串類型的值能存儲最大容量是多少?
512M
8、為什麼 Redis 需要把所有數據放到內存中?
Redis 為了達到最快的讀寫速度將數據都讀到內存中,並通過異步的方式將數據寫入磁盤。
所以 redis 具有快速和數據持久化的特徵,如果不將數據放在內存中,磁盤 I/O 速度為嚴重影響 redis 的性能。
在內存越來越便宜的今天,redis 將會越來越受歡迎, 如果設置了最大使用的內存,則數據已有記錄數達到內存限值後不能繼續插入新值。
9、Redis 集群方案應該怎麼做?都有哪些方案?
1.codis
2.目前用的最多的集群方案,基本和 twemproxy 一致的效果,但它支持在節點數量改變情況下,舊節點數據可恢復到新 hash 節點。
redis cluster3.0 自帶的集群,特點在於他的分佈式算法不是一致性 hash,而是 hash 槽的概念,以及自身支持節點設置從節點。具體看官方文檔介紹。
3.在業務代碼層實現,起幾個毫無關聯的 redis 實例,在代碼層,對 key 進行 hash 計算,然後去對應的redis 實例操作數據。這種方式對 hash 層代碼要求比較高,考慮部分包括,節點失效後的替代算法方案,數據震盪後的自動腳本恢復,實例的監控,等等。
10、Redis 集群方案什麼情況下會導致整個集群不可用?
有 A,B,C 三個節點的集群,在沒有複製模型的情況下,如果節點 B 失敗了,那麼整個集群就會以為缺少5501-11000 這個範圍的槽而不可用。
由於篇幅限制,太長看下去會很乏味,也會影響閱讀體驗,下面展現將以圖片形式展示。獲取原文件以及更多資源請關注轉發分享後,後臺私信回覆【Redis】獲取原文件領取地址。
前言
八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。
說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?
經過很多數粉絲面試過後的反饋,Java面試重點如下:
數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題免費分享給大家,文末有獲取地址!
今天下面就列舉的是Redis的相關面試問題,看看你是否能答出來。
- 什麼是 Redis?簡述它的優缺點?
- Redis 與 memcached 相比有哪些優勢?
- Redis 支持哪幾種數據類型?
- Redis 主要消耗什麼物理資源?
- Redis 有哪幾種數據淘汰策略?
- Redis 官方為什麼不提供 Windows 版本?
- 一個字符串類型的值能存儲最大容量是多少?
- 為什麼 Redis 需要把所有數據放到內存中?
- Redis 集群方案應該怎麼做?都有哪些方案?
- Redis 集群方案什麼情況下會導致整個集群不可用?
- Redis 有哪些適合的場景?
- Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
- Redis 和 Redisson 有什麼關係?
- Jedis 與 Redisson 對比有什麼優缺點?
- 說說 Redis 哈希槽的概念?
- Redis 集群的主從複製模型是怎樣的?
- Redis 集群會有寫操作丟失嗎?為什麼?
- Redis 集群之間是如何複製的?
- Redis 集群最大節點個數是多少?
- Redis 集群如何選擇數據庫?
- Redis 中的管道有什麼用?
- 怎麼理解 Redis 事務?
- Redis 事務相關的命令有哪幾個?
- Redis key 的過期時間和永久有效分別怎麼設置?
- Redis 如何做內存優化?
- Redis 回收進程如何工作的?
- 上述 Redis 分佈式鎖的缺點
- 使用過 Redis 分佈式鎖麼,它是怎麼實現的?
- 使用過 Redis 做異步隊列麼,你是怎麼用的?有什麼缺點?
- 什麼是緩存穿透?如何避免?什麼是緩存雪崩?何如避免?
- redis 和 memcached 什麼區別?為什麼高併發下有時單線程的 redis 比多線程的 memcached 效率要高?
- redis 主從複製如何實現的?redis 的集群模式如何實現?redis 的 key 是如何尋址的?
- 使用 redis 如何設計分佈式鎖?說一下實現思路?使用 zk 可以嗎?如何實現?這兩種有什麼區別?
- 知道 redis 的持久化嗎?底層如何實現的?有什麼優點缺點?
- redis 過期策略都有哪些?LRU 算法知道嗎?寫一下 java 代碼實現?
- 緩存穿透、緩存擊穿、緩存雪崩解決方案?
- 在選擇緩存時,什麼時候選擇 redis,什麼時候選擇 memcached
- 緩存與數據庫不一致怎麼辦
- 主從數據庫不一致如何解決
- Redis 常見的性能問題和解決方案
- Redis 的數據淘汰策略有哪些
- Redis 當中有哪些數據結構
- 假如 Redis 裡面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,如 果將它們全部找出來?
- 使用 Redis 做過異步隊列嗎,是如何實現的
- Redis 如何實現延時隊列
面試答案
1、什麼是 Redis?簡述它的優缺點?
Redis 的全稱是:Remote Dictionary.Server,本質上是一個 Key-Value 類型的內存數據庫,很像memcached,整個數據庫統統加載在內存當中進行操作,定期通過異步操作把數據庫數據 flush 到硬盤上進行保存。
因為是純內存操作,Redis 的性能非常出色,每秒可以處理超過 10 萬次讀寫操作,是已知性能最快的Key-Value DB。
Redis 的出色之處不僅僅是性能,Redis 最大的魅力是支持保存多種數據結構,此外單個 value 的最大限制是 1GB,不像 memcached 只能保存 1MB 的數據,因此 Redis 可以用來實現很多有用的功能。
比方說用他的 List 來做 FIFO 雙向鏈表,實現一個輕量級的高性 能消息隊列服務,用他的 Set 可以做高性能的 tag 系統等等。
另外 Redis 也可以對存入的 Key-Value 設置 expire 時間,因此也可以被當作一 個功能加強版的
memcached 來用。 Redis 的主要缺點是數據庫容量受到物理內存的限制,不能用作海量數據的高性能讀寫,因此 Redis 適合的場景主要侷限在較小數據量的高性能操作和運算上。
2、Redis 與 memcached 相比有哪些優勢?
1.memcached 所有的值均是簡單的字符串,redis 作為其替代者,支持更為豐富的數據類型
2.redis 的速度比 memcached 快很多 redis 的速度比 memcached 快很多
3.redis 可以持久化其數據 redis 可以持久化其數據
3、Redis 支持哪幾種數據類型?
String、List、Set、Sorted Set、hashes
4、Redis 主要消耗什麼物理資源?
內存 。
5、Redis 有哪幾種數據淘汰策略?
1.noeviction:返回錯誤當內存限制達到,並且客戶端嘗試執行會讓更多內存被使用的命令。
2.allkeys-lru: 嘗試回收最少使用的鍵(LRU),使得新添加的數據有空間存放。
3.volatile-lru: 嘗試回收最少使用的鍵(LRU),但僅限於在過期集合的鍵,使得新添加的數據有空間存放。
4.allkeys-random: 回收隨機的鍵使得新添加的數據有空間存放。
5.volatile-random: 回收隨機的鍵使得新添加的數據有空間存放,但僅限於在過期集合的鍵。
6.volatile-ttl: 回收在過期集合的鍵,並且優先回收存活時間(TTL)較短的鍵,使得新添加的數據有空間存放。
6、Redis 官方為什麼不提供 Windows 版本?
因為目前 Linux 版本已經相當穩定,而且用戶量很大,無需開發 windows 版本,反而會帶來兼容性等問題。
7、一個字符串類型的值能存儲最大容量是多少?
512M
8、為什麼 Redis 需要把所有數據放到內存中?
Redis 為了達到最快的讀寫速度將數據都讀到內存中,並通過異步的方式將數據寫入磁盤。
所以 redis 具有快速和數據持久化的特徵,如果不將數據放在內存中,磁盤 I/O 速度為嚴重影響 redis 的性能。
在內存越來越便宜的今天,redis 將會越來越受歡迎, 如果設置了最大使用的內存,則數據已有記錄數達到內存限值後不能繼續插入新值。
9、Redis 集群方案應該怎麼做?都有哪些方案?
1.codis
2.目前用的最多的集群方案,基本和 twemproxy 一致的效果,但它支持在節點數量改變情況下,舊節點數據可恢復到新 hash 節點。
redis cluster3.0 自帶的集群,特點在於他的分佈式算法不是一致性 hash,而是 hash 槽的概念,以及自身支持節點設置從節點。具體看官方文檔介紹。
3.在業務代碼層實現,起幾個毫無關聯的 redis 實例,在代碼層,對 key 進行 hash 計算,然後去對應的redis 實例操作數據。這種方式對 hash 層代碼要求比較高,考慮部分包括,節點失效後的替代算法方案,數據震盪後的自動腳本恢復,實例的監控,等等。
10、Redis 集群方案什麼情況下會導致整個集群不可用?
有 A,B,C 三個節點的集群,在沒有複製模型的情況下,如果節點 B 失敗了,那麼整個集群就會以為缺少5501-11000 這個範圍的槽而不可用。
由於篇幅限制,太長看下去會很乏味,也會影響閱讀體驗,下面展現將以圖片形式展示。獲取原文件以及更多資源請關注轉發分享後,後臺私信回覆【Redis】獲取原文件領取地址。
最後,分享一份面試寶典《Java核心知識點整理.pdf》,覆蓋了JVM、鎖、高併發、反射、Spring原理、微服務、Zookeeper、數據庫、數據結構等等,有興趣小夥伴也可以一併領取哦
關注+轉發後私信【Redis】獲取資源地址。
前言
八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。
說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?
經過很多數粉絲面試過後的反饋,Java面試重點如下:
數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題免費分享給大家,文末有獲取地址!
今天下面就列舉的是Redis的相關面試問題,看看你是否能答出來。
- 什麼是 Redis?簡述它的優缺點?
- Redis 與 memcached 相比有哪些優勢?
- Redis 支持哪幾種數據類型?
- Redis 主要消耗什麼物理資源?
- Redis 有哪幾種數據淘汰策略?
- Redis 官方為什麼不提供 Windows 版本?
- 一個字符串類型的值能存儲最大容量是多少?
- 為什麼 Redis 需要把所有數據放到內存中?
- Redis 集群方案應該怎麼做?都有哪些方案?
- Redis 集群方案什麼情況下會導致整個集群不可用?
- Redis 有哪些適合的場景?
- Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
- Redis 和 Redisson 有什麼關係?
- Jedis 與 Redisson 對比有什麼優缺點?
- 說說 Redis 哈希槽的概念?
- Redis 集群的主從複製模型是怎樣的?
- Redis 集群會有寫操作丟失嗎?為什麼?
- Redis 集群之間是如何複製的?
- Redis 集群最大節點個數是多少?
- Redis 集群如何選擇數據庫?
- Redis 中的管道有什麼用?
- 怎麼理解 Redis 事務?
- Redis 事務相關的命令有哪幾個?
- Redis key 的過期時間和永久有效分別怎麼設置?
- Redis 如何做內存優化?
- Redis 回收進程如何工作的?
- 上述 Redis 分佈式鎖的缺點
- 使用過 Redis 分佈式鎖麼,它是怎麼實現的?
- 使用過 Redis 做異步隊列麼,你是怎麼用的?有什麼缺點?
- 什麼是緩存穿透?如何避免?什麼是緩存雪崩?何如避免?
- redis 和 memcached 什麼區別?為什麼高併發下有時單線程的 redis 比多線程的 memcached 效率要高?
- redis 主從複製如何實現的?redis 的集群模式如何實現?redis 的 key 是如何尋址的?
- 使用 redis 如何設計分佈式鎖?說一下實現思路?使用 zk 可以嗎?如何實現?這兩種有什麼區別?
- 知道 redis 的持久化嗎?底層如何實現的?有什麼優點缺點?
- redis 過期策略都有哪些?LRU 算法知道嗎?寫一下 java 代碼實現?
- 緩存穿透、緩存擊穿、緩存雪崩解決方案?
- 在選擇緩存時,什麼時候選擇 redis,什麼時候選擇 memcached
- 緩存與數據庫不一致怎麼辦
- 主從數據庫不一致如何解決
- Redis 常見的性能問題和解決方案
- Redis 的數據淘汰策略有哪些
- Redis 當中有哪些數據結構
- 假如 Redis 裡面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,如 果將它們全部找出來?
- 使用 Redis 做過異步隊列嗎,是如何實現的
- Redis 如何實現延時隊列
面試答案
1、什麼是 Redis?簡述它的優缺點?
Redis 的全稱是:Remote Dictionary.Server,本質上是一個 Key-Value 類型的內存數據庫,很像memcached,整個數據庫統統加載在內存當中進行操作,定期通過異步操作把數據庫數據 flush 到硬盤上進行保存。
因為是純內存操作,Redis 的性能非常出色,每秒可以處理超過 10 萬次讀寫操作,是已知性能最快的Key-Value DB。
Redis 的出色之處不僅僅是性能,Redis 最大的魅力是支持保存多種數據結構,此外單個 value 的最大限制是 1GB,不像 memcached 只能保存 1MB 的數據,因此 Redis 可以用來實現很多有用的功能。
比方說用他的 List 來做 FIFO 雙向鏈表,實現一個輕量級的高性 能消息隊列服務,用他的 Set 可以做高性能的 tag 系統等等。
另外 Redis 也可以對存入的 Key-Value 設置 expire 時間,因此也可以被當作一 個功能加強版的
memcached 來用。 Redis 的主要缺點是數據庫容量受到物理內存的限制,不能用作海量數據的高性能讀寫,因此 Redis 適合的場景主要侷限在較小數據量的高性能操作和運算上。
2、Redis 與 memcached 相比有哪些優勢?
1.memcached 所有的值均是簡單的字符串,redis 作為其替代者,支持更為豐富的數據類型
2.redis 的速度比 memcached 快很多 redis 的速度比 memcached 快很多
3.redis 可以持久化其數據 redis 可以持久化其數據
3、Redis 支持哪幾種數據類型?
String、List、Set、Sorted Set、hashes
4、Redis 主要消耗什麼物理資源?
內存 。
5、Redis 有哪幾種數據淘汰策略?
1.noeviction:返回錯誤當內存限制達到,並且客戶端嘗試執行會讓更多內存被使用的命令。
2.allkeys-lru: 嘗試回收最少使用的鍵(LRU),使得新添加的數據有空間存放。
3.volatile-lru: 嘗試回收最少使用的鍵(LRU),但僅限於在過期集合的鍵,使得新添加的數據有空間存放。
4.allkeys-random: 回收隨機的鍵使得新添加的數據有空間存放。
5.volatile-random: 回收隨機的鍵使得新添加的數據有空間存放,但僅限於在過期集合的鍵。
6.volatile-ttl: 回收在過期集合的鍵,並且優先回收存活時間(TTL)較短的鍵,使得新添加的數據有空間存放。
6、Redis 官方為什麼不提供 Windows 版本?
因為目前 Linux 版本已經相當穩定,而且用戶量很大,無需開發 windows 版本,反而會帶來兼容性等問題。
7、一個字符串類型的值能存儲最大容量是多少?
512M
8、為什麼 Redis 需要把所有數據放到內存中?
Redis 為了達到最快的讀寫速度將數據都讀到內存中,並通過異步的方式將數據寫入磁盤。
所以 redis 具有快速和數據持久化的特徵,如果不將數據放在內存中,磁盤 I/O 速度為嚴重影響 redis 的性能。
在內存越來越便宜的今天,redis 將會越來越受歡迎, 如果設置了最大使用的內存,則數據已有記錄數達到內存限值後不能繼續插入新值。
9、Redis 集群方案應該怎麼做?都有哪些方案?
1.codis
2.目前用的最多的集群方案,基本和 twemproxy 一致的效果,但它支持在節點數量改變情況下,舊節點數據可恢復到新 hash 節點。
redis cluster3.0 自帶的集群,特點在於他的分佈式算法不是一致性 hash,而是 hash 槽的概念,以及自身支持節點設置從節點。具體看官方文檔介紹。
3.在業務代碼層實現,起幾個毫無關聯的 redis 實例,在代碼層,對 key 進行 hash 計算,然後去對應的redis 實例操作數據。這種方式對 hash 層代碼要求比較高,考慮部分包括,節點失效後的替代算法方案,數據震盪後的自動腳本恢復,實例的監控,等等。
10、Redis 集群方案什麼情況下會導致整個集群不可用?
有 A,B,C 三個節點的集群,在沒有複製模型的情況下,如果節點 B 失敗了,那麼整個集群就會以為缺少5501-11000 這個範圍的槽而不可用。
由於篇幅限制,太長看下去會很乏味,也會影響閱讀體驗,下面展現將以圖片形式展示。獲取原文件以及更多資源請關注轉發分享後,後臺私信回覆【Redis】獲取原文件領取地址。
最後,分享一份面試寶典《Java核心知識點整理.pdf》,覆蓋了JVM、鎖、高併發、反射、Spring原理、微服務、Zookeeper、數據庫、數據結構等等,有興趣小夥伴也可以一併領取哦
關注+轉發後私信【Redis】獲取資源地址。
前言
八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。
說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?
經過很多數粉絲面試過後的反饋,Java面試重點如下:
數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題免費分享給大家,文末有獲取地址!
今天下面就列舉的是Redis的相關面試問題,看看你是否能答出來。
- 什麼是 Redis?簡述它的優缺點?
- Redis 與 memcached 相比有哪些優勢?
- Redis 支持哪幾種數據類型?
- Redis 主要消耗什麼物理資源?
- Redis 有哪幾種數據淘汰策略?
- Redis 官方為什麼不提供 Windows 版本?
- 一個字符串類型的值能存儲最大容量是多少?
- 為什麼 Redis 需要把所有數據放到內存中?
- Redis 集群方案應該怎麼做?都有哪些方案?
- Redis 集群方案什麼情況下會導致整個集群不可用?
- Redis 有哪些適合的場景?
- Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
- Redis 和 Redisson 有什麼關係?
- Jedis 與 Redisson 對比有什麼優缺點?
- 說說 Redis 哈希槽的概念?
- Redis 集群的主從複製模型是怎樣的?
- Redis 集群會有寫操作丟失嗎?為什麼?
- Redis 集群之間是如何複製的?
- Redis 集群最大節點個數是多少?
- Redis 集群如何選擇數據庫?
- Redis 中的管道有什麼用?
- 怎麼理解 Redis 事務?
- Redis 事務相關的命令有哪幾個?
- Redis key 的過期時間和永久有效分別怎麼設置?
- Redis 如何做內存優化?
- Redis 回收進程如何工作的?
- 上述 Redis 分佈式鎖的缺點
- 使用過 Redis 分佈式鎖麼,它是怎麼實現的?
- 使用過 Redis 做異步隊列麼,你是怎麼用的?有什麼缺點?
- 什麼是緩存穿透?如何避免?什麼是緩存雪崩?何如避免?
- redis 和 memcached 什麼區別?為什麼高併發下有時單線程的 redis 比多線程的 memcached 效率要高?
- redis 主從複製如何實現的?redis 的集群模式如何實現?redis 的 key 是如何尋址的?
- 使用 redis 如何設計分佈式鎖?說一下實現思路?使用 zk 可以嗎?如何實現?這兩種有什麼區別?
- 知道 redis 的持久化嗎?底層如何實現的?有什麼優點缺點?
- redis 過期策略都有哪些?LRU 算法知道嗎?寫一下 java 代碼實現?
- 緩存穿透、緩存擊穿、緩存雪崩解決方案?
- 在選擇緩存時,什麼時候選擇 redis,什麼時候選擇 memcached
- 緩存與數據庫不一致怎麼辦
- 主從數據庫不一致如何解決
- Redis 常見的性能問題和解決方案
- Redis 的數據淘汰策略有哪些
- Redis 當中有哪些數據結構
- 假如 Redis 裡面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,如 果將它們全部找出來?
- 使用 Redis 做過異步隊列嗎,是如何實現的
- Redis 如何實現延時隊列
面試答案
1、什麼是 Redis?簡述它的優缺點?
Redis 的全稱是:Remote Dictionary.Server,本質上是一個 Key-Value 類型的內存數據庫,很像memcached,整個數據庫統統加載在內存當中進行操作,定期通過異步操作把數據庫數據 flush 到硬盤上進行保存。
因為是純內存操作,Redis 的性能非常出色,每秒可以處理超過 10 萬次讀寫操作,是已知性能最快的Key-Value DB。
Redis 的出色之處不僅僅是性能,Redis 最大的魅力是支持保存多種數據結構,此外單個 value 的最大限制是 1GB,不像 memcached 只能保存 1MB 的數據,因此 Redis 可以用來實現很多有用的功能。
比方說用他的 List 來做 FIFO 雙向鏈表,實現一個輕量級的高性 能消息隊列服務,用他的 Set 可以做高性能的 tag 系統等等。
另外 Redis 也可以對存入的 Key-Value 設置 expire 時間,因此也可以被當作一 個功能加強版的
memcached 來用。 Redis 的主要缺點是數據庫容量受到物理內存的限制,不能用作海量數據的高性能讀寫,因此 Redis 適合的場景主要侷限在較小數據量的高性能操作和運算上。
2、Redis 與 memcached 相比有哪些優勢?
1.memcached 所有的值均是簡單的字符串,redis 作為其替代者,支持更為豐富的數據類型
2.redis 的速度比 memcached 快很多 redis 的速度比 memcached 快很多
3.redis 可以持久化其數據 redis 可以持久化其數據
3、Redis 支持哪幾種數據類型?
String、List、Set、Sorted Set、hashes
4、Redis 主要消耗什麼物理資源?
內存 。
5、Redis 有哪幾種數據淘汰策略?
1.noeviction:返回錯誤當內存限制達到,並且客戶端嘗試執行會讓更多內存被使用的命令。
2.allkeys-lru: 嘗試回收最少使用的鍵(LRU),使得新添加的數據有空間存放。
3.volatile-lru: 嘗試回收最少使用的鍵(LRU),但僅限於在過期集合的鍵,使得新添加的數據有空間存放。
4.allkeys-random: 回收隨機的鍵使得新添加的數據有空間存放。
5.volatile-random: 回收隨機的鍵使得新添加的數據有空間存放,但僅限於在過期集合的鍵。
6.volatile-ttl: 回收在過期集合的鍵,並且優先回收存活時間(TTL)較短的鍵,使得新添加的數據有空間存放。
6、Redis 官方為什麼不提供 Windows 版本?
因為目前 Linux 版本已經相當穩定,而且用戶量很大,無需開發 windows 版本,反而會帶來兼容性等問題。
7、一個字符串類型的值能存儲最大容量是多少?
512M
8、為什麼 Redis 需要把所有數據放到內存中?
Redis 為了達到最快的讀寫速度將數據都讀到內存中,並通過異步的方式將數據寫入磁盤。
所以 redis 具有快速和數據持久化的特徵,如果不將數據放在內存中,磁盤 I/O 速度為嚴重影響 redis 的性能。
在內存越來越便宜的今天,redis 將會越來越受歡迎, 如果設置了最大使用的內存,則數據已有記錄數達到內存限值後不能繼續插入新值。
9、Redis 集群方案應該怎麼做?都有哪些方案?
1.codis
2.目前用的最多的集群方案,基本和 twemproxy 一致的效果,但它支持在節點數量改變情況下,舊節點數據可恢復到新 hash 節點。
redis cluster3.0 自帶的集群,特點在於他的分佈式算法不是一致性 hash,而是 hash 槽的概念,以及自身支持節點設置從節點。具體看官方文檔介紹。
3.在業務代碼層實現,起幾個毫無關聯的 redis 實例,在代碼層,對 key 進行 hash 計算,然後去對應的redis 實例操作數據。這種方式對 hash 層代碼要求比較高,考慮部分包括,節點失效後的替代算法方案,數據震盪後的自動腳本恢復,實例的監控,等等。
10、Redis 集群方案什麼情況下會導致整個集群不可用?
有 A,B,C 三個節點的集群,在沒有複製模型的情況下,如果節點 B 失敗了,那麼整個集群就會以為缺少5501-11000 這個範圍的槽而不可用。
由於篇幅限制,太長看下去會很乏味,也會影響閱讀體驗,下面展現將以圖片形式展示。獲取原文件以及更多資源請關注轉發分享後,後臺私信回覆【Redis】獲取原文件領取地址。
最後,分享一份面試寶典《Java核心知識點整理.pdf》,覆蓋了JVM、鎖、高併發、反射、Spring原理、微服務、Zookeeper、數據庫、數據結構等等,有興趣小夥伴也可以一併領取哦
關注+轉發後私信【Redis】獲取資源地址。