面試驚魂記:我被面試官打了,只由於Redis我是這樣回答的

前言

八月已近尾聲,面對即將到來的九月、十月你是否已經準備充分,作好了迎接準備,都說一年有兩個黃金季,一個是已通過去的金三銀四,你是否抓住機會找到了一份心儀的工做,若是沒有,那麼不要緊金九銀十立刻來了,此次就要準備充足,不要再讓機會在眼前溜走啦。java

說到面試,那就要好好準備下,不許備充分的面試,徹底是浪費時間,更是對本身的不負責。那麼面試的知識點是哪些呢?面試

通過大多數粉絲面試事後的反饋,Java面試重點以下:redis

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

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

Redis高級面試專題

  1. 什麼是 Redis?簡述它的優缺點?
  2. Redis與memcached相比有哪些優點?
  3. Redis支持哪幾種數據類型?
  4. Redis主要消耗什麼物理資源?
  5. Redis有哪幾種數據淘汰策略?
  6. Redis官方爲何不提供Windows版本?
  7. 一個字符串類型的值能存儲最大容量是多少?
  8. 爲何Redis須要把全部數據放到內存中?
  9. Redis集羣方案應該怎麼作?都有哪些方案?
  10. Redis集羣方案什麼狀況下會致使整個集羣不可用?
  11. MySQL裏有2000w數據,redis中只存20w的數據,如何保證redis中的數據都是熱點數據?
  12. Redis有哪些適合的場景?
  13. Redis支持的Java客戶端都有哪些?官方推薦用哪一個?
  14. Redis和Redisson有什麼關係?
  15. Jedis與Redisson對比有什麼優缺點?
  16. 說說Redis哈希槽的概念?
  17. Redis集羣的主從複製模型是怎樣的?
  18. Redis集羣會有寫操做丟失嗎?爲何?
  19. Redis集羣之間是如何複製的?
  20. Redis集羣最大節點個數是多少?
  21. Redis集羣如何選擇數據庫?
  22. Redis中的管道有什麼用?
  23. 怎麼理解Redis事務?
  24. Redis事務相關的命令有哪幾個?
  25. Rediskey的過時時間和永久有效分別怎麼設置?
  26. Redis如何作內存優化?
  27. Redis回收進程如何工做的?
  28. 加鎖機制
  29. 鎖互斥機制
  30. watchdog自動延期機制
  31. 可重入加鎖機制
  32. 釋放鎖機制
  33. 上述Redis分佈式鎖的缺點
  34. 使用過Redis分佈式鎖麼,它是怎麼實現的?
  35. 使用過Redis作異步隊列麼,你是怎麼用的?有什麼缺點?
  36. 什麼是緩存穿透?如何避免?什麼是緩存雪崩?何如避免?

面試題答案

一、什麼是 Redis?簡述它的優缺點?編程

Redis的全稱是:RemoteDictionary.Server,本質上是一個Key-Value類型的內存數據庫,很像memcached,整個數據庫通通加載在內存當中進行操做,按期經過異步操做把數據庫數據flush到硬盤上進行保存。設計模式

由於是純內存操做,Redis的性能很是出色,每秒能夠處理超過10萬次讀寫操做,是已知性能最快的Key-ValueDB。緩存

Redis的出色之處不只僅是性能,Redis最大的魅力是支持保存多種數據結構,此外單個value的最大限制是1GB,不像memcached只能保存1MB的數據,所以Redis能夠用來實現不少有用的功能。比方說用他的List來作FIFO雙向鏈表,實現一個輕量級的高性能消息隊列服務,用他的Set能夠作高性能的tag系統等等。性能優化

另外Redis也能夠對存入的Key-Value設置expire時間,所以也能夠被看成一個功能增強版的memcached來用。Redis的主要缺點是數據庫容量受到物理內存的限制,不能用做海量數據的高性能讀寫,所以Redis適合的場景主要侷限在較小數據量的高性能操做和運算上。微信

二、Redis與memcached相比有哪些優點?

  • memcached全部的值均是簡單的字符串,redis做爲其替代者,支持更爲豐富的數據類型
  • redis的速度比memcached快不少redis的速度比memcached快不少
  • redis能夠持久化其數據redis能夠持久化其數據

三、Redis支持哪幾種數據類型?

String、List、Set、SortedSet、hashes

四、Redis主要消耗什麼物理資源?

內存。

五、Redis有哪幾種數據淘汰策略?

  1. noeviction:返回錯誤當內存限制達到,而且客戶端嘗試執行會讓更多內存被使用的命令。
  2. allkeys-lru:嘗試回收最少使用的鍵(LRU),使得新添加的數據有空間存放。
  3. volatile-lru:嘗試回收最少使用的鍵(LRU),但僅限於在過時集合的鍵,使得新添加的數據有空間存放。
  4. allkeys-random:回收隨機的鍵使得新添加的數據有空間存放。
  5. volatile-random:回收隨機的鍵使得新添加的數據有空間存放,但僅限於在過時集合的鍵。
  6. volatile-ttl:回收在過時集合的鍵,而且優先回收存活時間(TTL)較短的鍵,使得新添加的數據有空間存放。

因爲篇幅限制,太長看下去會很乏味,也會影響閱讀體驗,下面展示將以圖片形式展現。

對文章中學習腦圖感興趣的能夠 關注 轉發後私信【架構】獲取資源地址。還有更多面試題整理中,能夠一併獲取。

歡迎關注微信公衆號:慕容千語的架構筆記。歡迎關注一塊兒進步。

相關文章
相關標籤/搜索