欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解redis集群的三種方式

 更新時間:2022年07月25日 09:38:38   投稿:mrr  
Redis三種集群方式分別是主從復(fù)制,哨兵模式,Cluster集群,這篇文章主要介紹了redis集群的三種方式,本文給大家介紹的非常詳細,需要的朋友可以參考下

Redis三種集群方式:主從復(fù)制,哨兵模式,Cluster集群。

主從復(fù)制

基本原理

當新建立一個從服務(wù)器時,從服務(wù)器將向主服務(wù)器發(fā)送SYNC命令,接收到SYNC命令后的主服務(wù)器會進行一次BGSAVE命令,在執(zhí)行期間,會將所有命令寫入緩沖區(qū)中,當BGSAVE命令執(zhí)行完畢之后會將生成的RDB文件發(fā)送給從服務(wù)器,從服務(wù)器使用這個文件加載數(shù)據(jù)到內(nèi)存中,之后主服務(wù)器會以Redis命令協(xié)議的格式將緩沖區(qū)的命令發(fā)送給從服務(wù)器。此后每次主服務(wù)執(zhí)行命令都會同步給從服務(wù)器。即使有多個從服務(wù)器向主服務(wù)器發(fā)送SYNC命令,主服務(wù)器也只會執(zhí)行一個BGSAVE命令,就可以處理接下來的同步請求。一個主服務(wù)器可以擁有多個從服務(wù)器,而從服務(wù)器也可擁有從服務(wù)器,從而形成一個圖狀結(jié)構(gòu),復(fù)制功能不會阻塞主服務(wù)器,即使有一個或多個同步請求,主服務(wù)器依然能處理命令請求。

持久化開關(guān)

當配置了主從復(fù)制模式時需要開啟主服務(wù)器的持久化功能,如果將主服務(wù)器的持久化功能關(guān)閉,主服務(wù)器一旦重啟,所有從服務(wù)器的數(shù)據(jù)將會丟失,即使配置了Sentinel模式,如果主服務(wù)器自動拉起進程比較快,以至于在Sentinel模式下還未選舉出新的主服務(wù)器,主服務(wù)的啟動也會造成子服務(wù)器的數(shù)據(jù)丟失。

配置

配置一個主從復(fù)制模式,只需要使用Slaveof命令即可,在conf配置文件中添加或者是在redis中執(zhí)行命令。

SLAVEOF host port

哨兵模式

基本原理

Redis的Sentinel系統(tǒng)用于管理多個Redis,主要執(zhí)行以下三件事:

監(jiān)控:Sentinel會不斷的檢查主從服務(wù)器運行狀態(tài)

提醒:當某個Redis服務(wù)器出現(xiàn)故障,可通過API或者其他應(yīng)用程序發(fā)送通知

自動故障遷移:當一個主服務(wù)器不能正常工作時,Sentinel會進行一次故障自動遷移,會將失效主服務(wù)器的從服務(wù)器選舉出一個新的主服務(wù)器,剩下的從服務(wù)器將會自動連接復(fù)制選舉出來的新服務(wù)器的數(shù)據(jù)。

Redis的Sentinel系統(tǒng)是一個分布式的系統(tǒng),可以在系統(tǒng)中配置一個或多個Sentinel。

啟動

使用redis-sentinel啟動

redis-sentinel sentinel.confy

也可以使用redis-server來啟動

redis-server sentinel.conf --sentinelyy

以上兩種方式都可以啟動sentinel,啟動sentinel必須指定配置文件,否則無法啟動:

配置

一個sentinel.conf文件最少需要一句配置:

sentinel monitor mymaster 127.0.0.1 6379 2

監(jiān)視一個別名叫做mymaster的主機,地址是127.0.0.1,端口是6379,將這個主服務(wù)器判斷為失效至少需要2個sentinel同意。

無論設(shè)置多少個sentinel同意判斷一個主服務(wù)器的失效,都需要系統(tǒng)中多個Sentinel支持才能進行故障遷移,而只有少數(shù)sentinel正常運行的時候,是無法進行故障遷移。

故障遷移

當一個Sentinel發(fā)現(xiàn)主服務(wù)器下線時,稱為主觀下線,只有多個Sentinel都發(fā)現(xiàn)主服務(wù)下線,并相互之間通過命令進行交流判斷主服務(wù)器下線時,稱為客觀下線。只有對主服務(wù)器進行客觀下線時,會選舉出領(lǐng)頭Sentinel,選舉出之后,會進行新的主服務(wù)器投票選舉,選舉出一個從服務(wù)器升級為主服務(wù)器。并向被選中的從服務(wù)器發(fā)送Slaveof no one命令,讓其變?yōu)橹鞣?wù)器,通過發(fā)布訂閱的功能,將新的配置廣播給其他Sentinel進行更新,并向下線的主服務(wù)器發(fā)送Slaveof命令,讓其復(fù)制新的主服務(wù)器,當所有從服務(wù)器都已經(jīng)開始復(fù)制新的主服務(wù)器時,領(lǐng)頭Sentinel終止本次故障遷移。

當一個 Redis 實例被重新配置是,無論是被設(shè)置成主服務(wù)器、從服務(wù)器、又或者被設(shè)置成其他主服務(wù)器的從服務(wù)器 ,Sentinel 都會向被重新配置的實例發(fā)送一個 CONFIG REWRITE 命令, 從而確保這些配置會持久化在硬盤里。

Cluster集群

之前的主從復(fù)制,哨兵模式都難以再現(xiàn)擴容,而Redis cluster集群實現(xiàn)了對Redis的水平擴容,即啟動N個Redis節(jié)點,每個節(jié)點又可以有自己的從服務(wù)器,將數(shù)據(jù)均勻分布的存儲在這N個結(jié)點上,每個節(jié)點存儲數(shù)據(jù)的1/N。Redis cluster集群就是一個可以在多個Redis節(jié)點之間進行數(shù)據(jù)共享的設(shè)施;Redis cluster集群采用的是無中心化配置,即節(jié)點A無法處理,會將請求轉(zhuǎn)發(fā)只節(jié)點B進行處理。

鍵分布模型

Redis集群中的鍵空間被分割為16384個槽位。每個主節(jié)點負責(zé)16384中槽位的一部分,Redis使用CRC16 算法進行槽位分配。為了保證高可用,cluster模式也引入了主從復(fù)制模式,一個主節(jié)點對應(yīng)一個或多個從節(jié)點,當主節(jié)點發(fā)生宕機時,可進行故障轉(zhuǎn)移,將子節(jié)點升級為主節(jié)點。

配置cluster集群

Redis 集群由多個運行在集群模式(cluster mode)下的 Redis 實例組成, 實例的集群模式需要通過配置來開啟,以下是一個包含了最少選項的集群配置文件示例:

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

cluster-enabled:打開集群模式
cluster-config-file:節(jié)點配置文件名,無須人為修改, 它由 Redis 集群在啟動時創(chuàng)建, 并在有需要時自動進行更新
cluster-node-timeout:節(jié)點失聯(lián)時間,當超過此毫秒,集群將自動切換主從節(jié)點。

要讓集群正常運作至少需要三個主節(jié)點,而每個主節(jié)點都應(yīng)該正確配置一個或者多個從節(jié)點。

啟動集群

使用redis-cli --cluster create命令將節(jié)點合并成一個集群

redis-cli --cluster create --cluster-replicas 1  127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

 --cluster-replicas 1 這個指的是從機的數(shù)量,表示我們希望為集群中的每個主節(jié)點創(chuàng)建一個從節(jié)點。

進入集群模式只需要使用redis-cli -c命令

redis-cli -c -p 7000

無中心話節(jié)點,所以進入任意一個端口號的主節(jié)點即可。

到此這篇關(guān)于redis集群的三種方式的文章就介紹到這了,更多相關(guān)redis集群內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解利用redis + lua解決搶紅包高并發(fā)的問題

    詳解利用redis + lua解決搶紅包高并發(fā)的問題

    本篇文章主要介紹了利用redis + lua解決搶紅包高并發(fā)的問題 ,詳細的講訴了需求分析和方案,有興趣的可以了解一下。
    2016-11-11
  • 分布式鎖為什么要選擇Zookeeper而不是Redis?看完這篇你就明白了

    分布式鎖為什么要選擇Zookeeper而不是Redis?看完這篇你就明白了

    Zookeeper的機制可以保證分布式鎖實現(xiàn)業(yè)務(wù)代碼簡單,成本低,Redis如果要解決分布式鎖的問題,對于一些復(fù)雜的情況,很難解決,成本較高,這篇文章重點給大家介紹分布式鎖選擇Zookeeper 而不是Redis的理由,一起看看吧
    2021-05-05
  • Redis教程(四):Hashes數(shù)據(jù)類型

    Redis教程(四):Hashes數(shù)據(jù)類型

    這篇文章主要介紹了Redis教程(四):Hashes數(shù)據(jù)類型,本文講解了Hashes數(shù)據(jù)類型概述、相關(guān)命令列表和命令使用示例等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Redis限流的幾種實現(xiàn)

    Redis限流的幾種實現(xiàn)

    面對越來越多的高并發(fā)場景,限流顯示的尤為重要,限流有許多種實現(xiàn)的方式,Redis具有很強大的功能,本文就詳細的介紹幾種方式,感興趣的可以了解一下
    2021-12-12
  • Redis實現(xiàn)布隆過濾器的代碼詳解

    Redis實現(xiàn)布隆過濾器的代碼詳解

    布隆過濾器(Bloom?Filter)是Redis?4.0版本提供的新功能,它被作為插件加載到Redis服務(wù)器中,給Redis提供強大的去重功能,本文將給大家詳細介紹一下Redis布隆過濾器,文中有相關(guān)的代碼示例,需要的朋友可以參考下
    2023-07-07
  • 使用redis實現(xiàn)延遲通知功能(Redis過期鍵通知)

    使用redis實現(xiàn)延遲通知功能(Redis過期鍵通知)

    這篇文章主要介紹了使用redis實現(xiàn)延遲通知功能(Redis過期鍵通知)的相關(guān)知識,本文通過實例代碼圖文相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-09-09
  • redis啟動和退出命令行簡單操作步驟

    redis啟動和退出命令行簡單操作步驟

    Redis是一種鍵值存儲數(shù)據(jù)庫,用戶可以使用它來存儲和檢索大量的鍵值數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于redis啟動和退出命令行的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • 詳解Redis中的雙鏈表結(jié)構(gòu)

    詳解Redis中的雙鏈表結(jié)構(gòu)

    這篇文章主要介紹了Redis中的雙鏈表結(jié)構(gòu),包括listNode結(jié)構(gòu)的API,需要的朋友可以參考下
    2015-08-08
  • Redis分布式緩存:微信搶紅包解決方案

    Redis分布式緩存:微信搶紅包解決方案

    微信搶紅包已經(jīng)在我們生活中很常見的場景了,特別是年底公司開年會和春節(jié)2個時間段。本文主要介紹了通過Redis實現(xiàn)微信搶紅包功能,感興趣的小伙伴可以了解一下
    2021-12-12
  • Redis數(shù)據(jù)庫分布式設(shè)計方案介紹

    Redis數(shù)據(jù)庫分布式設(shè)計方案介紹

    大家好,本篇文章主要講的是Redis數(shù)據(jù)庫分布式設(shè)計方案介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01

最新評論