1. 程式人生 > >Redis知識點

Redis知識點

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

  • 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記憶體優化
    • 儘量使用hash資料結構
    • 減少key的數量
  • Redis分散式鎖
    • setnx key val:setnx爭搶鎖
    • expire key timeout:爭到鎖後,設定超時時間
    • delete key:刪除key
  • Redis非同步佇列
    • list作為佇列,lpush生產訊息,rpop消費訊息
    • 當rpop沒有訊息時,適當sleep一會再重試
    • 生產一次消費多次:使用pub/sub訂閱模式
  • 快取穿透
    • 大量的惡意請求故意查詢不存在的key,對資料庫造成壓力
    • 避免
      • 對查詢結果為空的資料也進行快取,快取時間設定較短
      • 對一定不存在的key進行過濾。
  • 快取雪崩
    • 快取伺服器重啟或者在某個時間段,快取集中失效
    • 避免
      • 不同的key設定不同的過期時間,熱資料快取時間長一些,冷資料快取時間短一些,儘量分散快取過期時間
      • 加鎖或者佇列來控制讀資料庫寫快取的執行緒數量