redis是單線程的,
1.爲什麼快?
純內存操作
單線程,減少了上下文切換
非阻塞I/O多路複用
2.數據類型?
string
hash:value=>結構化對象|模擬session效果
list:模擬簡單的消息隊列、排隊|redis可用於分頁
set:全局去重
sored set:多了一個權重參數sare|排行榜、取topn
3.redis的過期策略以及內存淘汰機制
定期刪除+惰性刪除
4.redis和數據庫雙寫一致性問題(只能降低概率,不能避免)
更新策略:先更新數據庫,再更新緩存
刪除緩存失效:補償機制
5.緩存穿透和緩存雪崩
緩存穿透:黑色故意去請求緩存中不存在的數據,導致所有請求都懟到數據庫上,從而鏈接失常
解決:互斥鎖、異步更新策略、提供一個能迅速判斷請求是否有效的攔截機制
緩存雪崩:
解決:給緩存一個隨機失效時間、互斥鎖、雙緩存
6.解決redis的併發競爭key問題:
不要求順序:分佈式鎖,大家去搶鎖
要求順序:保存一個時間戳