常見Redis面試題

前言

Redis你們都不陌生了,是高併發解決方案居家必備的良藥。能夠幫助咱們解決高併發,存在的性能問題。面試

做爲面試常問中間件,你應該知道這些常見redis面試題。redis

常見面試題

  1. 單線程的redis爲毛這麼快?

從如下幾點回答,純內存操做,單線程操做避免了頻繁上下文切換,採用非阻塞的多路複用機制。 緩存

redis-client在操做的時候,產生不一樣類型的事件的socket,服務端的IO多路複用程序,將其放入隊列,事件派發器會去隊列中取,轉發到不一樣的事件處理器中處理。併發

  1. redis數據類型有哪些?

一共五種。異步

  • String 常見的get/set操做。
  • hash value能夠存放一些結構化的對象信息。
  • list 能夠做爲簡單的隊列使用,利用lrange作分頁查詢。
  • set 存放不重複的集合。
  • sorted set 帶有score權重的set集合,能夠作排行榜需求。
  1. redis的過時策略有哪些?

定時刪除+惰性刪除socket

  • 定時刪除:定時器監控key,過時自動刪除,過程消耗cpu,通常不採用。
  • 按期刪除+惰性刪除:每隔100ms檢查一次,有過時key則刪除,惰性刪除是在嘗試獲取某個key時進行檢查,進行刪除操做。
  • 內存淘汰機制:能夠設置redis的配置 maxmemory-policy volatile-lru,在內存不足時對使用最少的key進行淘汰。
  1. redis緩存穿透和雪崩怎麼解決?

緩存穿透:分佈式

  • 互斥鎖;
  • 異步更新:維護value的失效時間,異步線程進行更新;
  • 布隆過濾器進行攔截;

防止雪崩:高併發

  • 失效事件隨機,避免集體失效;
  • 互斥鎖,存在性能問題;
  • 多級緩存;
  1. redis併發key競爭如何解決?

通常的採用redis的事務機制,可是在集羣環境下數據已經分片就很難搞,redis的事務就顯得雞肋。性能

分狀況討論:線程

  • 對順序沒有要求,採用分佈式鎖進行排隊,屬於悲觀鎖方式。
  • 對順序有要求,採用時間戳方式,在set以前比對時間戳,屬於樂觀鎖方式。

歡迎關注公衆號【服務端技術雜談】,轉發,點贊。

相關文章
相關標籤/搜索