前言
本章內容來自B站黑馬程序員java大廠面試題和小林coding
博主學習筆記,如果有不對的地方,海涵。
如果這篇文章對你有幫助,可以點點關注,點點贊,謝謝你!
1.redis的使用場景
1.1 緩存
緩存穿透
在布隆過濾器后再加一層緩存,set存儲被注銷的username
緩存擊穿
互斥鎖加強版:雙重判定,取出數據庫的數據也要判斷一下存在與否
緩存雪崩
雙寫一致
延遲雙刪
BinLog
Redis持久化
Redis的數據過期策略
數據淘汰策略
1.2 分布式鎖
沒有集群互斥鎖就可以
2.其他面試問題
2.1集群問題
集群方案
主從復制
單節點Redis的并發能力是有上限的,要進一步提高Redis的并發能力,就需要搭建主從集群,實現讀寫分離。
哨兵的作用
集群腦裂是由于主節點和從節點和sentinel處于不同的網絡分區,使得sentinel沒有能夠心跳感知到主節點,所以通過選舉的方式提升了一個從節點為主,這樣就存在了兩個master,就像大腦分裂了一樣,這樣會導致客戶端還在老的主節點那里寫入數據,新節點無法同步數據,當網絡恢復后,sentinel會將老的主節點降為從節點,這時再從新master同步數據,就會導致數據丟失
解決:我們可以修改redis的配置,可以設置最少的從節點數量以及縮短主從數據同步的延遲時間,達不到要求就拒絕請求,就可以避免大量的數據丟失