redis集羣和主從複製原理

Redis(內存數據庫)
是一個key-value存儲系統(布式內緩存,高性能的key-value數據庫)。它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操做,並且這些操做都是原子性的。在此基礎上,redis支持各類不一樣方式的排序。爲了保證效率,數據都是緩存在內存中。redis會週期性的把更新的數據寫入磁盤或者把修改操做寫入追加的記錄文件,而且在此基礎上實現了master-slave(主從)同步。redis


Redis特色:數據庫

  1. Redis支持數據的持久化,能夠將內存中的數據保存在磁盤中,重啓的時候能夠再次加載進行使用。
  2. Redis不只僅支持簡單的key-value類型的數據,同時還提供list,set,在set,hash等數據結構的存儲。
  3. Redis支持數據的備份,即master-slave模式的數據備份
  4. 性能極高- Redis能讀的速度是110000次/s,寫的速度是81000次/s
    5.Redis只能使用單線程,性能受限於CPU性能,故單實例CPU最高才可能達到5-6wQPS每秒(取決於數據結構,數據大小以及服務器硬件性能,平常環境中QPS高峯大約在1-2w左右);
    6.支持(快照、AOF):依賴快照進行持久化,AOF加強了可靠性的同時,對性能有所影響;
    7.Redis在string類型上會消耗較多內存,可使用dict(hash表)壓縮存儲以下降內存耗用;

Redis 集羣是3.0以後才引入的,在3.0以前,使用哨兵(sentinel)機制(本文將不作介紹,你們可另行查閱)來監控各個節點之間的狀態。Redis 集羣可謂是讓不少人久等了。
Redis 集羣是一組能進行數據共享的Redis 實例(服務或者節點)的設施,集羣可使用的功能是普通單機 Redis 所能使用的功能的一個子集;Redis 集羣一般具備高可用、可擴展性、分佈式、容錯等特性。瞭解redis的集羣后,這些晦澀的概念可結合redis的主從、集羣分區和集羣運維等角度理解體會。緩存

Redis集羣
基本介紹服務器

Redis 集羣是一個能夠在多個 Redis 節點之間進行數據共享的設施installation。網絡

Redis 集羣不支持那些須要同時處理多個鍵的 Redis 命令, 由於執行這些命令須要在多個 Redis 節點之間移動數據, 而且在高負載的狀況下, 這些命令將下降Redis集羣的性能, 並致使不可預測的行爲。
Redis 集羣經過分區partition來提供必定程度的可用性availability: 即便集羣中有一部分節點失效或者沒法進行通信, 集羣也能夠繼續處理命令請求。數據結構

Redis集羣提供瞭如下兩個好處:app

將數據自動切分split到多個節點的能力。
當集羣中的一部分節點失效或者沒法進行通信時, 仍然能夠繼續處理命令請求的能力。運維


Redis Cluster功能特色以下:
1)全部的節點相互鏈接
2)集羣消息通訊經過集羣總線通訊,集羣總線端口大小爲客戶端服務端口+10000,這個10000是固定值
3)節點與節點之間經過二進制協議進行通訊
4)客戶端和集羣節點之間通訊和一般同樣,經過文本協議進行
5)集羣節點不會代理查詢
6)數據按照Slot存儲分佈在多個Redis實例上
7)集羣節點掛掉會自動故障轉移
8)能夠相對平滑擴/縮容節點異步


Redis主從複製結構:
一主以從、一主多從、主從從分佈式

Redis主從複製工做原理
工做原理:
slave向master發送sync命令

master啓動後臺存盤進程,並收集全部修改數據命令

master完成後臺存盤後,傳送整個數據文件到slave

slave接收數據文件,加載到內存中完成首次徹底同步
後續有新數據產生時,master繼續將新的數據收集到
的修改命令依次傳給slave,完成同步。

主從複製缺點:
網絡繁忙,會產生數據同步延時問題
系統繁忙,會產生數據同步延時問題

哨兵模式:
主庫宕機後,從庫自動升級爲主庫
在slave主機編輯sentinel.conf文件


Redis持久化是如何工做的?

什麼是持久化?簡單來說就是將數據放到斷電後數據不會丟失的設備中,也就是咱們一般理解的硬盤上。

redis 提供了兩種持久化方式,一種是RDB,一種是AOF;
RDB 是指在制定的時間間隔生成數據集的快照,
AOF持久化記錄服務器執行的全部寫命令,並在服務器重啓時,從新執行這些命令來恢復數據


RDB的優勢和缺點
RDB優勢
–高性能的持久化實現 —>建立一個子進程來執行持久化,先將數據寫入臨時文件,持久化過程介乎後,再用這個臨時文件替換上次持久化號的完呢鍵; 過程當中主進程不作任何IO操做(處理客戶端請求的進程和負責存盤的進程不是同一個進程)
–比較適合大規模數據恢復,且對數據完整性要求不是很高
RDB的缺點
–意外宕機時,最後一次持久化的數據會丟失


AOF優勢和缺點
AOF優勢:
– 能夠靈活設置持久化方式,同步持久化方式有三種,同步持久化appendfsync always或異步持久化appendfsync everysec
–出現之外宕機時,僅肯能丟失1秒的數據

AOF缺點–持久化文件的體積一般會大於RDB的體積–執行fsync策略時的速度可能會比RDB方式慢

相關文章
相關標籤/搜索