分布式--Redis持久化策略家浇、主從復(fù)制、集群

一碴裙、持久化策略

上篇提到Redis和memcached對(duì)比钢悲,還具有持久化功能点额,Redis支持兩種持久化策略:

策略 描述 優(yōu)點(diǎn) 缺點(diǎn)
rdb 默認(rèn)模式,可以在指定間隔時(shí)間內(nèi)生成數(shù)據(jù)快照莺琳,默認(rèn)保存到dump.rdb文件中还棱,每次重啟會(huì)從該文件中讀取 數(shù)據(jù)保存在子進(jìn)程中,對(duì)主進(jìn)程影響胁训取珍手;rdb是緊湊型文件,恢復(fù)數(shù)據(jù)效率高于aof 保存點(diǎn)之間redis崩潰辞做,可能會(huì)丟失數(shù)據(jù)琳要;子進(jìn)程fork時(shí),數(shù)據(jù)量過(guò)大導(dǎo)致的性能低下
aof 執(zhí)行修改數(shù)據(jù)的操作秤茅,直接同步到數(shù)據(jù)庫(kù)文件中 數(shù)據(jù)安全性高 文件大小大于rdb稚补,效率較慢

開啟aof需要修改配置文件:

# 開啟aof
appendonly yes
# 保存的文件名
appendfilename "appendonly.aof"

二、主從復(fù)制

Redis支持一主多從框喳,保證節(jié)點(diǎn)的高可用课幕,節(jié)點(diǎn)有多個(gè)復(fù)制品(replica)構(gòu)成,其中一個(gè)為主(master)五垮,其余的為從(slave)
主從復(fù)制可以對(duì)主節(jié)點(diǎn)數(shù)據(jù)備份乍惊,提升容災(zāi)能力。在Redis中拼余,主節(jié)點(diǎn)一般用作寫數(shù)據(jù)污桦,從節(jié)點(diǎn)只具備讀數(shù)據(jù)功能亩歹,因而實(shí)現(xiàn)讀寫分離匙监,提高集群性能

1. 主從環(huán)境搭建

我們需要使用多個(gè)redis來(lái)模擬多臺(tái)服務(wù)器,在redis安裝目錄/usr/local/redis新建一個(gè)replica目錄小作,并在其中創(chuàng)建master亭姥、slave1slave2目錄

mkdir replica
cd replica
mkdir master
mkdir slave1
mkdir slave2

將redis下的bin目錄分別復(fù)制到三個(gè)目錄中

cp -r bin ./replica/master
cp -r bin ./replica/slave1
cp -r bin ./replica/slave2

2. 修改主從配置

目前主機(jī)的端口為:6379

修改兩個(gè)從機(jī)的配置顾稀,一個(gè)設(shè)置為6380达罗,一個(gè)設(shè)置為6381

# 端口
port 6380
# 主機(jī)ip和端口
replicaof 192.168.42.4 6379

3. 啟動(dòng)三個(gè)redis

編寫shell腳本:

vi start.sh

內(nèi)容為:

cd /usr/local/redis/replica/master/bin
./redis-server redis.conf
cd /usr/local/redis/replica/slave1/bin
./redis-server redis.conf
cd /usr/local/redis/replica/slave2/bin
./redis-server redis.conf

賦予權(quán)限并執(zhí)行:

chmod 777 start.sh
./start.sh

查看進(jìn)程:

三個(gè)redis都正常啟動(dòng)完成了

4. 測(cè)試主從

4.1 主機(jī)寫數(shù)據(jù)

我們通過(guò)主機(jī)寫數(shù)據(jù),進(jìn)入主機(jī)的客戶端:

cd /usr/local/redis/replica/master/bin/
./redis-cli

寫入數(shù)據(jù):

set info hello

還可以使用info命令查看主機(jī)的狀態(tài):


可以看到兩個(gè)從機(jī)已經(jīng)確立了主從關(guān)系

4.2 從機(jī)讀數(shù)據(jù)

進(jìn)入從機(jī)的客戶端静秆,使用-p指定6380端口:

cd /usr/local/redis/replica/slave1/bin
./redis-cli -p 6380

讀取數(shù)據(jù):

get info

結(jié)果:

4.3 主機(jī)宕機(jī)

將主機(jī)關(guān)閉粮揉,客戶端中使用shutdown

shutdown

進(jìn)程查看,已經(jīng)關(guān)閉了:

此時(shí)使用從機(jī)獲取剛剛的數(shù)據(jù)依然有效:

三抚笔、哨兵

主從復(fù)制可以實(shí)現(xiàn)主機(jī)節(jié)點(diǎn)宕機(jī)后扶认,依然可以獲取從節(jié)點(diǎn)的數(shù)據(jù),可用性確實(shí)提高了殊橙,但是從節(jié)點(diǎn)只能讀不能寫辐宾,這也是一個(gè)致命的問(wèn)題狱从。哨兵就是為了解決從機(jī)不可寫而產(chǎn)生的,一旦發(fā)現(xiàn)主機(jī)宕機(jī)叠纹,那么哨兵將通過(guò)檢舉季研,提升一臺(tái)從機(jī)為主機(jī),因而使之擁有寫能力誉察,哨兵可以配置多臺(tái)

1. 配置文件

將redis解壓完的目錄下的sentinel.conf文件復(fù)制三份到上面三個(gè)redis中

cp ./sentinel.conf /usr/local/redis/replica/master/bin/
cp ./sentinel.conf /usr/local/redis/replica/slave1/bin/
cp ./sentinel.conf /usr/local/redis/replica/slave2/bin/

修改內(nèi)容為:

# 改端口 与涡,推薦使用2+對(duì)應(yīng)redis的端口
port 26379
# 后臺(tái)進(jìn)程
daemonize yes
# 出錯(cuò)日志存放路徑
logfile “/usr/local/redis/replica/master/26379.log”
# 哨兵監(jiān)聽(tīng)的主機(jī)ip和端口 后面2是表示2臺(tái)哨兵發(fā)現(xiàn)后才觸發(fā)從機(jī)升級(jí)
sentinel monitor mymaster 192.168.93.10 6379 2
# 改端口 ,推薦使用2+對(duì)應(yīng)redis的端口
port 26380
# 后臺(tái)進(jìn)程
daemonize yes
# 出錯(cuò)日志存放路徑
logfile “/usr/local/redis/replica/slave1/26380.log”
# 哨兵監(jiān)聽(tīng)的主機(jī)ip和端口 后面2是表示2臺(tái)哨兵發(fā)現(xiàn)后才觸發(fā)從機(jī)升級(jí)
sentinel monitor mymaster 192.168.93.10 6379 2
# 改端口 持偏,推薦使用2+對(duì)應(yīng)redis的端口
port 26381
# 后臺(tái)進(jìn)程
daemonize yes
# 出錯(cuò)日志存放路徑
logfile “/usr/local/redis/replica/slave2/26381.log”
# 哨兵監(jiān)聽(tīng)的主機(jī)ip和端口 后面2是表示2臺(tái)哨兵發(fā)現(xiàn)后才觸發(fā)從機(jī)升級(jí)
sentinel monitor mymaster 192.168.93.10 6379 2

2. 啟動(dòng)哨兵

在啟動(dòng)哨兵之前递沪,記得先把redis啟動(dòng)

./redis-sentinel ./sentinel.conf

3. 測(cè)試

接著把主機(jī)關(guān)閉:

在從機(jī)中查看狀態(tài),可以看到上升為主機(jī)了:

接著測(cè)試下寫功能:

四综液、集群

哨兵解決了從節(jié)點(diǎn)不可寫的問(wèn)題款慨,但沒(méi)能解決負(fù)載均衡,集群解決了寫操作的負(fù)載均衡谬莹,并可以水平擴(kuò)展檩奠,在Redis中,超過(guò)1/2的節(jié)點(diǎn)不可用附帽,那么整個(gè)集群就不可用了埠戳,所以我們都是搭建奇數(shù)臺(tái)Redis服務(wù)器

1. 環(huán)境搭建

復(fù)制6份redis的bin目錄到三個(gè)文件夾下:

cd /usr/local/redis
mkdir cluster
cp -r bin cluster/cluster-7001
cp -r bin cluster/cluster-7002
cp -r bin cluster/cluster-7003
cp -r bin cluster/cluster-7004
cp -r bin cluster/cluster-7005
cp -r bin cluster/cluster-7006

2. 修改配置文件

redis.conf配置文件修改以下內(nèi)容:

port 7001
# 取消注釋,開啟集群功能
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 15000
daemonize yes
protected-mode no
pidfile /var/run/redis_7001.pid
port 7002
# 取消注釋蕉扮,開啟集群功能
cluster-enabled yes
cluster-config-file nodes-7002.conf
cluster-node-timeout 15000
daemonize yes
protected-mode no
pidfile /var/run/redis_7002.pid
port 7003
# 取消注釋整胃,開啟集群功能
cluster-enabled yes
cluster-config-file nodes-7003.conf
cluster-node-timeout 15000
daemonize yes
protected-mode no
pidfile /var/run/redis_7003.pid

剩余的4-6也進(jìn)行配置

3. 啟動(dòng)Redis

-bash-4.2# pwd
/usr/local/redis/cluster

vi start-cluster.sh

內(nèi)容為:

./cluster-7001/redis-server ./cluster-7001/redis.conf
./cluster-7002/redis-server ./cluster-7002/redis.conf
./cluster-7003/redis-server ./cluster-7003/redis.conf
./cluster-7004/redis-server ./cluster-7004/redis.conf
./cluster-7005/redis-server ./cluster-7005/redis.conf
./cluster-7006/redis-server ./cluster-7006/redis.conf

修改執(zhí)行權(quán)限:

chmod 777 ./start-cluster.sh

啟動(dòng)Redis:

./start-cluster.sh 

進(jìn)程查詢:

4. 啟動(dòng)集群

上面只是啟動(dòng)了Redis,但想讓多個(gè)Redis建立集群關(guān)系喳钟,還需使用下面命令(Redis5以上):

./redis-cli --cluster create 192.168.42.4:7001 192.168.42.4:7002 192.168.42.4:7003 192.168.42.4:7004 192.168.42.4:7005 192.168.42.4:7006 --cluster-replicas 1

--cluster-replicas 1 表示1臺(tái)主機(jī)對(duì)應(yīng)1臺(tái)從機(jī)

執(zhí)行后屁使,輸入yes

5. 測(cè)試

進(jìn)入客戶端,注意加上-c

./redis-cli -p 7001 -c

結(jié)果:

以上就是Redis的基本使用和配置

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奔则,一起剝皮案震驚了整個(gè)濱河市蛮寂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌易茬,老刑警劉巖酬蹋,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異抽莱,居然都是意外死亡范抓,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門食铐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)匕垫,“玉大人,你說(shuō)我怎么就攤上這事璃岳∧甓校” “怎么了悔捶?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)单芜。 經(jīng)常有香客問(wèn)我蜕该,道長(zhǎng),這世上最難降的妖魔是什么洲鸠? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任堂淡,我火速辦了婚禮,結(jié)果婚禮上扒腕,老公的妹妹穿的比我還像新娘绢淀。我一直安慰自己,他們只是感情好瘾腰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布皆的。 她就那樣靜靜地躺著,像睡著了一般蹋盆。 火紅的嫁衣襯著肌膚如雪费薄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天栖雾,我揣著相機(jī)與錄音楞抡,去河邊找鬼。 笑死析藕,一個(gè)胖子當(dāng)著我的面吹牛召廷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播账胧,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼竞慢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了找爱?” 一聲冷哼從身側(cè)響起梗顺,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤泡孩,失蹤者是張志新(化名)和其女友劉穎车摄,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仑鸥,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吮播,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了眼俊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片意狠。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖疮胖,靈堂內(nèi)的尸體忽然破棺而出环戈,到底是詐尸還是另有隱情闷板,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布院塞,位于F島的核電站遮晚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拦止。R本人自食惡果不足惜县遣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汹族。 院中可真熱鬧萧求,春花似錦、人聲如沸顶瞒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)榴徐。三九已至秒梳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間箕速,已是汗流浹背酪碘。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盐茎,地道東北人兴垦。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像字柠,于是被迫代替她去往敵國(guó)和親探越。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容