'備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生'

"

前言

"

前言

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。

說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?

"

前言

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。

說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

經過很多數粉絲面試過後的反饋,Java面試重點如下:

數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題免費分享給大家,文末有獲取地址!

"

前言

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。

說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

經過很多數粉絲面試過後的反饋,Java面試重點如下:

數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題免費分享給大家,文末有獲取地址!

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

今天下面就列舉的是Redis的相關面試問題,看看你是否能答出來。

  1. 什麼是 Redis?簡述它的優缺點?
  2. Redis 與 memcached 相比有哪些優勢?
  3. Redis 支持哪幾種數據類型?
  4. Redis 主要消耗什麼物理資源?
  5. Redis 有哪幾種數據淘汰策略?
  6. Redis 官方為什麼不提供 Windows 版本?
  7. 一個字符串類型的值能存儲最大容量是多少?
  8. 為什麼 Redis 需要把所有數據放到內存中?
  9. Redis 集群方案應該怎麼做?都有哪些方案?
  10. Redis 集群方案什麼情況下會導致整個集群不可用?
  11. Redis 有哪些適合的場景?
  12. Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
  13. Redis 和 Redisson 有什麼關係?
  14. Jedis 與 Redisson 對比有什麼優缺點?
  15. 說說 Redis 哈希槽的概念?
  16. Redis 集群的主從複製模型是怎樣的?
  17. Redis 集群會有寫操作丟失嗎?為什麼?
  18. Redis 集群之間是如何複製的?
  19. Redis 集群最大節點個數是多少?
  20. Redis 集群如何選擇數據庫?
  21. Redis 中的管道有什麼用?
  22. 怎麼理解 Redis 事務?
  23. Redis 事務相關的命令有哪幾個?
  24. Redis key 的過期時間和永久有效分別怎麼設置?
  25. Redis 如何做內存優化?
  26. Redis 回收進程如何工作的?
  27. 上述 Redis 分佈式鎖的缺點
  28. 使用過 Redis 分佈式鎖麼,它是怎麼實現的?
  29. 使用過 Redis 做異步隊列麼,你是怎麼用的?有什麼缺點?
  30. 什麼是緩存穿透?如何避免?什麼是緩存雪崩?何如避免?
  31. redis 和 memcached 什麼區別?為什麼高併發下有時單線程的 redis 比多線程的 memcached 效率要高?
  32. redis 主從複製如何實現的?redis 的集群模式如何實現?redis 的 key 是如何尋址的?
  33. 使用 redis 如何設計分佈式鎖?說一下實現思路?使用 zk 可以嗎?如何實現?這兩種有什麼區別?
  34. 知道 redis 的持久化嗎?底層如何實現的?有什麼優點缺點?
  35. redis 過期策略都有哪些?LRU 算法知道嗎?寫一下 java 代碼實現?
  36. 緩存穿透、緩存擊穿、緩存雪崩解決方案?
  37. 在選擇緩存時,什麼時候選擇 redis,什麼時候選擇 memcached
  38. 緩存與數據庫不一致怎麼辦
  39. 主從數據庫不一致如何解決
  40. Redis 常見的性能問題和解決方案
  41. Redis 的數據淘汰策略有哪些
  42. Redis 當中有哪些數據結構
  43. 假如 Redis 裡面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,如 果將它們全部找出來?
  44. 使用 Redis 做過異步隊列嗎,是如何實現的
  45. 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】獲取原文件領取地址。

"

前言

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。

說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

經過很多數粉絲面試過後的反饋,Java面試重點如下:

數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題免費分享給大家,文末有獲取地址!

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

今天下面就列舉的是Redis的相關面試問題,看看你是否能答出來。

  1. 什麼是 Redis?簡述它的優缺點?
  2. Redis 與 memcached 相比有哪些優勢?
  3. Redis 支持哪幾種數據類型?
  4. Redis 主要消耗什麼物理資源?
  5. Redis 有哪幾種數據淘汰策略?
  6. Redis 官方為什麼不提供 Windows 版本?
  7. 一個字符串類型的值能存儲最大容量是多少?
  8. 為什麼 Redis 需要把所有數據放到內存中?
  9. Redis 集群方案應該怎麼做?都有哪些方案?
  10. Redis 集群方案什麼情況下會導致整個集群不可用?
  11. Redis 有哪些適合的場景?
  12. Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
  13. Redis 和 Redisson 有什麼關係?
  14. Jedis 與 Redisson 對比有什麼優缺點?
  15. 說說 Redis 哈希槽的概念?
  16. Redis 集群的主從複製模型是怎樣的?
  17. Redis 集群會有寫操作丟失嗎?為什麼?
  18. Redis 集群之間是如何複製的?
  19. Redis 集群最大節點個數是多少?
  20. Redis 集群如何選擇數據庫?
  21. Redis 中的管道有什麼用?
  22. 怎麼理解 Redis 事務?
  23. Redis 事務相關的命令有哪幾個?
  24. Redis key 的過期時間和永久有效分別怎麼設置?
  25. Redis 如何做內存優化?
  26. Redis 回收進程如何工作的?
  27. 上述 Redis 分佈式鎖的缺點
  28. 使用過 Redis 分佈式鎖麼,它是怎麼實現的?
  29. 使用過 Redis 做異步隊列麼,你是怎麼用的?有什麼缺點?
  30. 什麼是緩存穿透?如何避免?什麼是緩存雪崩?何如避免?
  31. redis 和 memcached 什麼區別?為什麼高併發下有時單線程的 redis 比多線程的 memcached 效率要高?
  32. redis 主從複製如何實現的?redis 的集群模式如何實現?redis 的 key 是如何尋址的?
  33. 使用 redis 如何設計分佈式鎖?說一下實現思路?使用 zk 可以嗎?如何實現?這兩種有什麼區別?
  34. 知道 redis 的持久化嗎?底層如何實現的?有什麼優點缺點?
  35. redis 過期策略都有哪些?LRU 算法知道嗎?寫一下 java 代碼實現?
  36. 緩存穿透、緩存擊穿、緩存雪崩解決方案?
  37. 在選擇緩存時,什麼時候選擇 redis,什麼時候選擇 memcached
  38. 緩存與數據庫不一致怎麼辦
  39. 主從數據庫不一致如何解決
  40. Redis 常見的性能問題和解決方案
  41. Redis 的數據淘汰策略有哪些
  42. Redis 當中有哪些數據結構
  43. 假如 Redis 裡面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,如 果將它們全部找出來?
  44. 使用 Redis 做過異步隊列嗎,是如何實現的
  45. 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】獲取原文件領取地址。

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

"

前言

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。

說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

經過很多數粉絲面試過後的反饋,Java面試重點如下:

數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題免費分享給大家,文末有獲取地址!

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

今天下面就列舉的是Redis的相關面試問題,看看你是否能答出來。

  1. 什麼是 Redis?簡述它的優缺點?
  2. Redis 與 memcached 相比有哪些優勢?
  3. Redis 支持哪幾種數據類型?
  4. Redis 主要消耗什麼物理資源?
  5. Redis 有哪幾種數據淘汰策略?
  6. Redis 官方為什麼不提供 Windows 版本?
  7. 一個字符串類型的值能存儲最大容量是多少?
  8. 為什麼 Redis 需要把所有數據放到內存中?
  9. Redis 集群方案應該怎麼做?都有哪些方案?
  10. Redis 集群方案什麼情況下會導致整個集群不可用?
  11. Redis 有哪些適合的場景?
  12. Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
  13. Redis 和 Redisson 有什麼關係?
  14. Jedis 與 Redisson 對比有什麼優缺點?
  15. 說說 Redis 哈希槽的概念?
  16. Redis 集群的主從複製模型是怎樣的?
  17. Redis 集群會有寫操作丟失嗎?為什麼?
  18. Redis 集群之間是如何複製的?
  19. Redis 集群最大節點個數是多少?
  20. Redis 集群如何選擇數據庫?
  21. Redis 中的管道有什麼用?
  22. 怎麼理解 Redis 事務?
  23. Redis 事務相關的命令有哪幾個?
  24. Redis key 的過期時間和永久有效分別怎麼設置?
  25. Redis 如何做內存優化?
  26. Redis 回收進程如何工作的?
  27. 上述 Redis 分佈式鎖的缺點
  28. 使用過 Redis 分佈式鎖麼,它是怎麼實現的?
  29. 使用過 Redis 做異步隊列麼,你是怎麼用的?有什麼缺點?
  30. 什麼是緩存穿透?如何避免?什麼是緩存雪崩?何如避免?
  31. redis 和 memcached 什麼區別?為什麼高併發下有時單線程的 redis 比多線程的 memcached 效率要高?
  32. redis 主從複製如何實現的?redis 的集群模式如何實現?redis 的 key 是如何尋址的?
  33. 使用 redis 如何設計分佈式鎖?說一下實現思路?使用 zk 可以嗎?如何實現?這兩種有什麼區別?
  34. 知道 redis 的持久化嗎?底層如何實現的?有什麼優點缺點?
  35. redis 過期策略都有哪些?LRU 算法知道嗎?寫一下 java 代碼實現?
  36. 緩存穿透、緩存擊穿、緩存雪崩解決方案?
  37. 在選擇緩存時,什麼時候選擇 redis,什麼時候選擇 memcached
  38. 緩存與數據庫不一致怎麼辦
  39. 主從數據庫不一致如何解決
  40. Redis 常見的性能問題和解決方案
  41. Redis 的數據淘汰策略有哪些
  42. Redis 當中有哪些數據結構
  43. 假如 Redis 裡面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,如 果將它們全部找出來?
  44. 使用 Redis 做過異步隊列嗎,是如何實現的
  45. 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】獲取原文件領取地址。

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

最後,分享一份面試寶典《Java核心知識點整理.pdf》,覆蓋了JVM、鎖、高併發、反射、Spring原理、微服務、Zookeeper、數據庫、數據結構等等,有興趣小夥伴也可以一併領取哦

關注+轉發後私信【Redis】獲取資源地址。

"

前言

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。

說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

經過很多數粉絲面試過後的反饋,Java面試重點如下:

數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題免費分享給大家,文末有獲取地址!

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

今天下面就列舉的是Redis的相關面試問題,看看你是否能答出來。

  1. 什麼是 Redis?簡述它的優缺點?
  2. Redis 與 memcached 相比有哪些優勢?
  3. Redis 支持哪幾種數據類型?
  4. Redis 主要消耗什麼物理資源?
  5. Redis 有哪幾種數據淘汰策略?
  6. Redis 官方為什麼不提供 Windows 版本?
  7. 一個字符串類型的值能存儲最大容量是多少?
  8. 為什麼 Redis 需要把所有數據放到內存中?
  9. Redis 集群方案應該怎麼做?都有哪些方案?
  10. Redis 集群方案什麼情況下會導致整個集群不可用?
  11. Redis 有哪些適合的場景?
  12. Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
  13. Redis 和 Redisson 有什麼關係?
  14. Jedis 與 Redisson 對比有什麼優缺點?
  15. 說說 Redis 哈希槽的概念?
  16. Redis 集群的主從複製模型是怎樣的?
  17. Redis 集群會有寫操作丟失嗎?為什麼?
  18. Redis 集群之間是如何複製的?
  19. Redis 集群最大節點個數是多少?
  20. Redis 集群如何選擇數據庫?
  21. Redis 中的管道有什麼用?
  22. 怎麼理解 Redis 事務?
  23. Redis 事務相關的命令有哪幾個?
  24. Redis key 的過期時間和永久有效分別怎麼設置?
  25. Redis 如何做內存優化?
  26. Redis 回收進程如何工作的?
  27. 上述 Redis 分佈式鎖的缺點
  28. 使用過 Redis 分佈式鎖麼,它是怎麼實現的?
  29. 使用過 Redis 做異步隊列麼,你是怎麼用的?有什麼缺點?
  30. 什麼是緩存穿透?如何避免?什麼是緩存雪崩?何如避免?
  31. redis 和 memcached 什麼區別?為什麼高併發下有時單線程的 redis 比多線程的 memcached 效率要高?
  32. redis 主從複製如何實現的?redis 的集群模式如何實現?redis 的 key 是如何尋址的?
  33. 使用 redis 如何設計分佈式鎖?說一下實現思路?使用 zk 可以嗎?如何實現?這兩種有什麼區別?
  34. 知道 redis 的持久化嗎?底層如何實現的?有什麼優點缺點?
  35. redis 過期策略都有哪些?LRU 算法知道嗎?寫一下 java 代碼實現?
  36. 緩存穿透、緩存擊穿、緩存雪崩解決方案?
  37. 在選擇緩存時,什麼時候選擇 redis,什麼時候選擇 memcached
  38. 緩存與數據庫不一致怎麼辦
  39. 主從數據庫不一致如何解決
  40. Redis 常見的性能問題和解決方案
  41. Redis 的數據淘汰策略有哪些
  42. Redis 當中有哪些數據結構
  43. 假如 Redis 裡面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,如 果將它們全部找出來?
  44. 使用 Redis 做過異步隊列嗎,是如何實現的
  45. 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】獲取原文件領取地址。

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

最後,分享一份面試寶典《Java核心知識點整理.pdf》,覆蓋了JVM、鎖、高併發、反射、Spring原理、微服務、Zookeeper、數據庫、數據結構等等,有興趣小夥伴也可以一併領取哦

關注+轉發後私信【Redis】獲取資源地址。

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

"

前言

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

八月已經過去了,九月也已經到來的、十月你是否已經準備充分,做好了迎接準備,都說一年有兩個黃金季,一個是已經過去的金三銀四,你是否抓住機會找到了一份心儀的工作,如果沒有,那麼沒關係金九銀十馬上來了,這次就要準備充足,不要再讓機會在眼前溜走啦。

說到面試,那就要好好準備下,不準備充分的面試,完全是浪費時間,更是對自己的不負責。那麼面試的知識點是哪些呢?

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

經過很多數粉絲面試過後的反饋,Java面試重點如下:

數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這由於文字很多,我總結了java面試所涉及到的常問範圍及常問面試題免費分享給大家,文末有獲取地址!

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

今天下面就列舉的是Redis的相關面試問題,看看你是否能答出來。

  1. 什麼是 Redis?簡述它的優缺點?
  2. Redis 與 memcached 相比有哪些優勢?
  3. Redis 支持哪幾種數據類型?
  4. Redis 主要消耗什麼物理資源?
  5. Redis 有哪幾種數據淘汰策略?
  6. Redis 官方為什麼不提供 Windows 版本?
  7. 一個字符串類型的值能存儲最大容量是多少?
  8. 為什麼 Redis 需要把所有數據放到內存中?
  9. Redis 集群方案應該怎麼做?都有哪些方案?
  10. Redis 集群方案什麼情況下會導致整個集群不可用?
  11. Redis 有哪些適合的場景?
  12. Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
  13. Redis 和 Redisson 有什麼關係?
  14. Jedis 與 Redisson 對比有什麼優缺點?
  15. 說說 Redis 哈希槽的概念?
  16. Redis 集群的主從複製模型是怎樣的?
  17. Redis 集群會有寫操作丟失嗎?為什麼?
  18. Redis 集群之間是如何複製的?
  19. Redis 集群最大節點個數是多少?
  20. Redis 集群如何選擇數據庫?
  21. Redis 中的管道有什麼用?
  22. 怎麼理解 Redis 事務?
  23. Redis 事務相關的命令有哪幾個?
  24. Redis key 的過期時間和永久有效分別怎麼設置?
  25. Redis 如何做內存優化?
  26. Redis 回收進程如何工作的?
  27. 上述 Redis 分佈式鎖的缺點
  28. 使用過 Redis 分佈式鎖麼,它是怎麼實現的?
  29. 使用過 Redis 做異步隊列麼,你是怎麼用的?有什麼缺點?
  30. 什麼是緩存穿透?如何避免?什麼是緩存雪崩?何如避免?
  31. redis 和 memcached 什麼區別?為什麼高併發下有時單線程的 redis 比多線程的 memcached 效率要高?
  32. redis 主從複製如何實現的?redis 的集群模式如何實現?redis 的 key 是如何尋址的?
  33. 使用 redis 如何設計分佈式鎖?說一下實現思路?使用 zk 可以嗎?如何實現?這兩種有什麼區別?
  34. 知道 redis 的持久化嗎?底層如何實現的?有什麼優點缺點?
  35. redis 過期策略都有哪些?LRU 算法知道嗎?寫一下 java 代碼實現?
  36. 緩存穿透、緩存擊穿、緩存雪崩解決方案?
  37. 在選擇緩存時,什麼時候選擇 redis,什麼時候選擇 memcached
  38. 緩存與數據庫不一致怎麼辦
  39. 主從數據庫不一致如何解決
  40. Redis 常見的性能問題和解決方案
  41. Redis 的數據淘汰策略有哪些
  42. Redis 當中有哪些數據結構
  43. 假如 Redis 裡面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,如 果將它們全部找出來?
  44. 使用 Redis 做過異步隊列嗎,是如何實現的
  45. 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】獲取原文件領取地址。

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

最後,分享一份面試寶典《Java核心知識點整理.pdf》,覆蓋了JVM、鎖、高併發、反射、Spring原理、微服務、Zookeeper、數據庫、數據結構等等,有興趣小夥伴也可以一併領取哦

關注+轉發後私信【Redis】獲取資源地址。

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

備戰跳槽季:來自面試官Redis靈魂45問,問到懷疑人生

"

相關推薦

推薦中...