Redis知識點
- Redis數據類型:String、List、Set、Sorted Set、Hash
- Redis淘汰策略
- 不淘汰數據
- 任意淘汰數據
- 最近最少使用的數據淘汰
- 從已設置過時時間的數據中任意淘汰
- 從已設置過時時間的數據中,淘汰最近最少使用的數據
- 從已設置過時時間的數據中,淘汰將要過時的數據
- 一個字符串類型的值能存儲的最大容量?512M
- Redis集羣方案
- Redis cluster模式(3.0自帶集羣)
主從節點,每一個節點管理一部分槽,一共分爲16384個槽。插入數據時,根據CRC16(KEY) mod 16384的值,決定將key放入哪一個槽中。
- 哨兵模式
- codis模式
- 客戶端本身分片
- Redis適合的場景
- 會話緩存
- 全頁緩存
- 隊列
- 排行榜/計數器
- 發佈/訂閱
- Redis集羣之間是如何複製的?異步複製
- Redis集羣最大的節點數是多少?16384
- Redis中管道用處?redis能夠接收多個請求,而後依次返回全部結果
- Redis事務
- 單獨隔離
- 全部命令序列化、按順序執行
- 執行過程當中,不會被其餘客戶端發來的命令請求打斷
- Redis事務相關的命令
- MULTI、EXEC、DISCARD、WATCH
- MULTI:標識事務開啓
- EXEC:事務結束
- DISCARD:清除事務
- WATCH:監聽事務
- Redis key過時時間設置:EXPIRE。永久有效:PERSIST
- Redis內存優化
- Redis分佈式鎖
- setnx key val:setnx爭搶鎖
- expire key timeout:爭到鎖後,設置超時時間
- delete key:刪除key
- Redis異步隊列
- list做爲隊列,lpush生產消息,rpop消費消息
- 當rpop沒有消息時,適當sleep一會再重試
- 生產一次消費屢次:使用pub/sub訂閱模式
- 緩存穿透
- 大量的惡意請求故意查詢不存在的key,對數據庫形成壓力
- 避免
- 對查詢結果爲空的數據也進行緩存,緩存時間設置較短
- 對必定不存在的key進行過濾。
- 緩存雪崩
- 緩存服務器重啓或者在某個時間段,緩存集中失效
- 避免
- 不一樣的key設置不一樣的過時時間,熱數據緩存時間長一些,冷數據緩存時間短一些,儘可能分散緩存過時時間
- 加鎖或者隊列來控制讀數據庫寫緩存的線程數量
歡迎關注本站公眾號,獲取更多信息