redis面試知識點

1、五種基礎數據結構

  • 字符
  • hash 數組+鏈表
  • set
  • sorted set
  • list

2、集群模式(cluster, Sentinel)

  • cluster:redis3.0主推模式,采用哈希槽分片,優勢是易擴容
  • Sentinel:哨兵模式、主備。高可用

3、持久化機制

  • AOF:命令追加,優點:不會丟數據,缺點:恢復比較慢
  • RDB:存儲快照,優點:恢復比較快,方便持久化,缺點:可能會丟數據

4、淘汰策略

?在redis.conf 中配置 maxmemory指定redis能使用的最大內存,達到內存最大限制時。redis會根據m- axmemory-policy,來決定具體的行為,淘汰策略:

  • noeviction:不刪除策略,達到maxmemory,直接返回錯誤
  • allkeys-lru:所有key通用,優先刪除最少使用的key
  • volatile-lru:只限于設置了expire的部分,優先刪除最少使用的key
  • allkeys-random:所有key通用,隨即刪除一部分
  • volatile-random:只限于設置了expire的部分,隨機刪除一部分
  • volatile-ttl:只限于設置了expire的部分,優先刪除快過期的key

5、過期策略

  • 定期刪除:redis每隔100ms就隨機抽取一些設置了過期時間的key,檢查是否過期,符合則刪除
  • 惰性刪除:每次get的時候會檢查是否過期,過期則刪除
    ?目前redis采用的是定期刪除+惰性刪除兩種策略

6、緩存穿透

?產生原因:請求的數據在緩存中大量不命中。導致請求走數據庫
?解決辦法:如果參數不合法可以使用BloomFilter攔截;設置一個較短過期時間的空對象到緩存中

7、緩存雪崩

?產生原因:redis掛掉,請求全走數據庫,對緩存數據設置了相同的過期時間,導致某段時間內緩存失效,請求全走數據庫
?解決辦法:過期時間加隨機值;事發前:實現redis的高可用,事發中:可以設置本地緩存+限流,事發后:redis持久化恢復

8、緩存與數據庫的雙寫一致性

?先刪除緩存,再更新數據庫
?先更新數據庫,在刪除緩存

9、keys 和 scan 命令

?keys時間復雜度為O(n),阻塞
?scan cursor [MATCH pattern] [COUNT count] 時間,非阻塞,游標掃描

10、查看redis的使用

?info命令

10、如何使用redis存放熱點key

?解決方案:限定Redis最大占用內存,Redis會根據自身數據淘汰策略,留下熱數據到內存

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。