Redis知識點
阿新 • • 發佈:2019-03-06
- Redis資料型別:String、List、Set、Sorted Set、Hash
- Redis淘汰策略
- 不淘汰資料
- 任意淘汰資料
- 最近最少使用的資料淘汰
- 從已設定過期時間的資料中任意淘汰
- 從已設定過期時間的資料中,淘汰最近最少使用的資料
- 從已設定過期時間的資料中,淘汰將要過期的資料
- 一個字串型別的值能儲存的最大容量?512M
- Redis叢集方案
- Redis cluster模式(3.0自帶叢集)
主從節點,每個節點管理一部分槽,一共分為16384個槽。插入資料時,根據CRC16(KEY) mod 16384的值,決定將key放入哪個槽中。 - 哨兵模式
- codis模式
- 客戶端自己分片
- Redis cluster模式(3.0自帶叢集)
- Redis適合的場景
- 會話快取
- 全頁快取
- 佇列
- 排行榜/計數器
- 釋出/訂閱
- Redis叢集之間是如何複製的?非同步複製
- Redis叢集最大的節點數是多少?16384
- Redis中管道用處?redis可以接收多個請求,然後依次返回所有結果
- Redis事務
- 單獨隔離
- 所有命令序列化、按順序執行
- 執行過程中,不會被其他客戶端發來的命令請求打斷
- Redis事務相關的命令
- MULTI、EXEC、DISCARD、WATCH
- MULTI:標識事務開啟
- EXEC:事務結束
- DISCARD:清除事務
- WATCH:監聽事務
- Redis key過期時間設定:EXPIRE。永久有效:PERSIST
- Redis記憶體優化
- 儘量使用hash資料結構
- 減少key的數量
- Redis分散式鎖
- setnx key val:setnx爭搶鎖
- expire key timeout:爭到鎖後,設定超時時間
- delete key:刪除key
- Redis非同步佇列
- list作為佇列,lpush生產訊息,rpop消費訊息
- 當rpop沒有訊息時,適當sleep一會再重試
- 生產一次消費多次:使用pub/sub訂閱模式
- 快取穿透
- 大量的惡意請求故意查詢不存在的key,對資料庫造成壓力
- 避免
- 對查詢結果為空的資料也進行快取,快取時間設定較短
- 對一定不存在的key進行過濾。
- 快取雪崩
- 快取伺服器重啟或者在某個時間段,快取集中失效
- 避免
- 不同的key設定不同的過期時間,熱資料快取時間長一些,冷資料快取時間短一些,儘量分散快取過期時間
- 加鎖或者佇列來控制讀資料庫寫快取的執行緒數量