1.springboot-reids Redis簡介

1.Redis簡介

  • Redis是一個高性能的key-value內存數據庫,支持持久化,可將數據保存在磁盤,重啓時加載;
  • Redis是單線程模型,所有操作都是原子性的。單個操作是原子性的,多個操作也支持事務;
  • Redis單機支持多個數據庫,每個數據庫的數據是隔離的。數據庫從0開始的遞增數字命名,默認支持16個數據庫。集羣沒有數據庫的概念;

2.Redis數據類型

  • string(字符串)
  • hash(哈希)
  • list(列表)
  • set(集合)
  • zset(sorted set有序集合)

3.Redis發佈訂閱

  • 一種消息通信模式:發送者(pub)發送消息,訂閱者(sub)接收消息;
  • 一個隊列可以被多個消費者同時訂閱,當有消息到達時,會將該消息依次發送給每個訂閱者;
  • 特性
    • 可靠性
      • 不可靠發佈者發佈消息,如沒有訂閱者或者訂閱者中途掉線,消息將丟失
    • 實時性
      • 實時性高
    • 持久性
      • 是針對於整個redis緩存的內容持久化;
    • 隊列監控
      • 監控比較困難
  • 特點
    • 輕量級,低延遲,高併發,低可靠性;
    • 適用於對可靠性要求不高的異步交互場景;

4.Redis事務

  • Redis事務可一次執行多個命令:
    • 在EXEC前把操作放入隊列緩存;
    • 在EXEC後執行事務,任意命令執行失敗,其餘的命令依然被執行;
    • 在事務執行中,不能插入其它操作;
    • 批量指令非原子化操作,某條指令失敗不會回滾已做指令,也不會取消後續指令
  • 事務執過程:
    • multi: 開始事務;
    • 命令入隊;
    • exec: 執行事務;
  • 相關命令:
    • watch key1 key2 … : 監視一或多個key(類似樂觀鎖);
    • multi: 事務開始;
    • exec: 執行事務;
    • discard : 取消事務(放棄事務塊中的所有命令);
    • unwatch : 取消watch對所有key的監控;
  • 說明
    • 若在事務隊列中存在命令性錯誤,則所有命令都不會執行;
    • 若在事務隊列中存在語法性錯誤,則其他正確命令會被執行,錯誤命令拋出異常;
    • watch類似於樂觀鎖,在事務提交時,果watch監控的任何KEY的值被更改,則事務隊列將不會被執行;
    • EXEC執行事務後,無論事務是否成功, WARCH的監控都會取消;

5.Redis集羣

  • 主從模式
    • 一個主redis服務器,多個從服務器。在master節點寫入數據後,同步到slave節點,實現數據的備份,並且可以在slave節點進行查詢,實現讀寫分離;
    • 優點
      • 數據備份
      • 讀寫分離
      • 高可靠性
        • slave節點下線不影響讀取其他slave節點和寫master節點,啓動後可恢復數據;
        • master節點下線,不影響讀slave節點,可手動切換到其它master節點;
    • 缺點
      • master節點下線,需要手動切換master節點,不能自動切換;
      • 每個節點都保存全量數據,對每個節點的資源要求較高,且不易擴展;
  • 哨兵(sentinel)模式
    • 一個或多個Sentinel實例組成的Sentinel系統監視任意多個redis主服務器和下屬的所有從服務器,在被監視的主服務器下線時,自動將下屬的某個從服務器升級爲新的主服務器;
    • 優點
      • 數據備份
      • 讀寫分離
      • 高可靠性
        • master節點下線,Sentinel會自動推舉其它slave節點爲master節點,不影響系統運行;
      • 易維護
        • 相對於集羣模式,需要的服務器數量較少,易於維護,適用於數據量一般的場景;
    • 缺點
      • 每個節點都保存全量數據,對每個節點的資源要求較高,且不易擴展;
  • 集羣(cluster)模式
    • 採用去中心化的思想,使用hash slot方式將16348個hash slot覆蓋到所有節點上,每個節點保存一部分數據;
    • 取值時先獲取到對key對應的hash slot,然後找到他的hash slot所在節點,由當前訪問節點從hash slot所在節點取數據;
    • 優點
      • 負載均衡
      • 每個節點保存部分數據,易擴展
      • 高可靠性
    • 缺點
      • 難維護
        • 一般至少需要三主三從架構,相對於哨兵模式難於維護,適用於數據量比較大的場景
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章