Redis學習筆記

1.關係型數據庫與No Sql介紹

  • 傳統的數據庫

1、複雜的查詢
在傳統的關係型數據庫中查詢-一個複雜的業務需要寫很複雜的sql語句。
2、伸縮性
在傳統的關係型數據庫業務增大系統需要擴容只能是縱向的形式擴展.。操作性能也與遇到瓶頸
3、傳統數據庫遵循ACID規則。而Nosql - -般爲分佈式而分佈式一般遵循 CAP定理

  • Not Only SQL
    NoSQL稱作NotOnlySQL的縮寫,是對不同於傳統的關係型數據庫的數據庫管理系統的統

常見NoSql分類

名稱 存儲
redis key-value
Hbase wide cloumn
mongoDb+ 文檔
Neo4J

2. Redis介紹

在這裏插入圖片描述
Redis官網

  • 簡介:
    Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.
  • 關鍵詞:
    內存數據結構存儲。 它支持 字符串、散列、列表、集合、帶範圍查詢的排序集、位圖、超日誌、具有RADIUS查詢和流的地理空間索引等 數據結構。 支持集羣自動分區提供了高可用性。 ,支持數據持久化。
  • 應用場景
  • 存儲緩存
    存儲緩存、投票、會話session、 排行榜、計數器、發佈訂閱等

Redis常見架構

  1. 單機Redis
    單機版限制: 1.內存容量有限 2處理能力限制 3.無法高可用.
    在這裏插入圖片描述
  2. 多機版本
    特性: 1、複製(Replication) 2、哨兵(Sentinel) 3、集羣(Cluster)

Redis多機版特性功能:
複製:擴展系統對於讀的能力
哨兵:爲服務器提供高可用特性,減少故障停機出現
集羣:擴展內存容量,增加機器,提高性能讀寫能力和存儲以及提供高可用特性
在這裏插入圖片描述

Redis【複製】

Redis 的複製(replication)功能允許用戶根據一個 Redis 服務器來創建任意多個該服務器 的複製品,其中被複制的服務器爲主服務器(master),而通過複製創建出來的服務器復 製品則爲從服務器(slave)。 只要主從服務器之間的網絡連接正常,主從服務器兩者會具 有相同的數據,主服務器就會一直將發生在自己身上的數據更新同步 給從服務器,從而一 直保證主從服務器的數據相同。

  1. 結構
    在這裏插入圖片描述
  2. 特點
    分爲master/slave兩種角色, 數據相同,降低master讀的壓力

Redis【哨兵】

Redis sentinel 是一個分佈式系統中監控 redis 主從服務器,並在主服務器下線時自動進 行故障轉移。其中三個特性: 監控(Monitoring): Sentinel 會不斷地檢查你的主服務器和從服務器是否運作正 常。 提醒(Notification): 當被監控的某個 Redis 服務器出現問題時, Sentinel 可以通 過 API 向管理員或者其他應用程序發送通知。 自動故障遷移(Automatic failover): 當一個主服務器不能正常工作時, Sentinel 會開始一次自動故障遷移操作

  1. 結構
    在這裏插入圖片描述
  2. 特點: 1、保證高可用 2、監控各個節點 3、自動故障遷移 缺點:主從模式,切換需要時間丟數據 沒有解決 master 寫的壓力

Redis【集羣】

  1. 集羣(proxy 型):
    Twemproxy 是一個 Twitter 開源的一個 redis 和 memcache 快速/輕量級代理服務器; Twemproxy 是一個快速的單線程代理程序,支持 Memcached ASCII 協議和 redis 協議。
    結構:在這裏插入圖片描述
    特點
    1、多種 hash 算法:MD5、CRC16、CRC32、CRC32a、hsieh、murmur、Jenkins
    2、支持失敗節點自動刪除
    3、後端 Sharding 分片邏輯對業務透明,業務方的讀寫方式和操作單個 Redis 一致
    缺點:增加了新的 proxy,需要維護其高可用。
    failover 邏輯需要自己實現,其本身不能支持故障的自動轉移
    可擴展性差,進行擴縮容都需要手動干預

  2. 集羣(直連型):
    Redis3.0 集羣 直連集羣 ,不需要指定,通過算法指定出來。
    在這裏插入圖片描述
    特點
    1、無中心架構(不存在哪個節點影響性能瓶頸),少了 proxy 層。 2、數據按照 slot 存儲分佈在多個節點,節點間數據共享,可動態調整數據分佈。
    3、可擴展性,可線性擴展到 1000 個節點,節點可動態添加或刪除。
    4、高可用性,部分節點不可用時,集羣仍可用。通過增加 Slave 做備份數據副本
    5、實現故障自動 failover,節點之間通過 gossip 協議交換狀態信息,用投票機制完成 Slave 到 Master 的角色提升。
    缺點
    1、資源隔離性較差,容易出現相互影響的情況。
    2、數據通過異步複製,不保證數據的強一致性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章