前言:
說到面試,那就要好好準備下,不許備充分的面試,徹底是浪費時間,更是對本身的不負責。那麼面試的知識點是哪些呢?面試
通過大多數朋友面試事後的反饋,Java面試重點以下:redis
數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。算法
今天下面就列舉的是Redis的相關面試問題,看看你是否能答出來。數據庫
Redis高級面試專題
- 什麼是 Redis?簡述它的優缺點?
- Redis與memcached相比有哪些優點?
- Redis支持哪幾種數據類型?
- Redis主要消耗什麼物理資源?
- Redis有哪幾種數據淘汰策略?
- Redis官方爲何不提供Windows版本?
- 一個字符串類型的值能存儲最大容量是多少?
- 爲何Redis須要把全部數據放到內存中?
- Redis集羣方案應該怎麼作?都有哪些方案?
- Redis集羣方案什麼狀況下會致使整個集羣不可用?
- MySQL裏有2000w數據,redis中只存20w的數據,如何保證redis中的數據都是熱點數據?
- Redis有哪些適合的場景?
- Redis支持的Java客戶端都有哪些?官方推薦用哪一個?
- Redis和Redisson有什麼關係?
- Jedis與Redisson對比有什麼優缺點?
- 說說Redis哈希槽的概念?
- Redis集羣的主從複製模型是怎樣的?
- Redis集羣會有寫操做丟失嗎?爲何?
- Redis集羣之間是如何複製的?
- Redis集羣最大節點個數是多少?
- Redis集羣如何選擇數據庫?
- Redis中的管道有什麼用?
- 怎麼理解Redis事務?
- Redis事務相關的命令有哪幾個?
- Rediskey的過時時間和永久有效分別怎麼設置?
- Redis如何作內存優化?
- Redis回收進程如何工做的?
- 加鎖機制
- 鎖互斥機制
- watchdog自動延期機制
- 可重入加鎖機制
- 釋放鎖機制
- 上述Redis分佈式鎖的缺點
- 使用過Redis分佈式鎖麼,它是怎麼實現的?
- 使用過Redis作異步隊列麼,你是怎麼用的?有什麼缺點?
- 什麼是緩存穿透?如何避免?什麼是緩存雪崩?何如避免?
面試題答案
一、什麼是 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有哪幾種數據淘汰策略?
- noeviction:返回錯誤當內存限制達到,而且客戶端嘗試執行會讓更多內存被使用的命令。
- allkeys-lru:嘗試回收最少使用的鍵(LRU),使得新添加的數據有空間存放。
- volatile-lru:嘗試回收最少使用的鍵(LRU),但僅限於在過時集合的鍵,使得新添加的數據有空間存放。
- allkeys-random:回收隨機的鍵使得新添加的數據有空間存放。
- volatile-random:回收隨機的鍵使得新添加的數據有空間存放,但僅限於在過時集合的鍵。
- volatile-ttl:回收在過時集合的鍵,而且優先回收存活時間(TTL)較短的鍵,使得新添加的數據有空間存放。
你的關注和點贊都是對筆者最大的支持。