Redis詳解6.主從模式

一年又一年,字節(jié)跳動(dòng) Lark(飛書) 研發(fā)團(tuán)隊(duì)又雙叒叕開始招新生啦土陪!
【內(nèi)推碼】:GTPUVBA
【內(nèi)推鏈接】:https://job.toutiao.com/s/JRupWVj
【招生對(duì)象】:20年9月后~21年8月前 畢業(yè)的同學(xué)
【報(bào)名時(shí)間】:6.16-7.16(提前批簡歷投遞只有一個(gè)月抓住機(jī)會(huì)哦7孔省)
【畫重點(diǎn)】:提前批和正式秋招不矛盾!面試成功,提前鎖定Offer毒坛;若有失利有勾,額外獲得一次面試機(jī)會(huì)疹启,正式秋招開啟后還可再次投遞。

章節(jié)目錄

Redis詳解1.安裝及使用
Redis詳解2.數(shù)據(jù)結(jié)構(gòu)
Redis詳解3.發(fā)布訂閱
Redis詳解4.事務(wù)
Redis詳解5.數(shù)據(jù)持久化
Redis詳解6.主從模式
Redis詳解7.哨兵模式
Redis詳解8.Cluster模式

1 簡介

Redis有三種集群模式:主從模式蔼卡、“哨兵”模式喊崖、Cluster集群模式。本節(jié)我們首先介紹主從模式雇逞。
在需要擴(kuò)展讀請(qǐng)求的時(shí)候荤懂,或者在需要寫入臨時(shí)數(shù)據(jù)的時(shí)候,用戶可以通過設(shè)置額外的Redis從服務(wù)器來保存數(shù)據(jù)集的副本塘砸。在接收到主服務(wù)器發(fā)送的數(shù)據(jù)初始副本之后节仿,客戶端每次向主服務(wù)器進(jìn)行寫入時(shí),從服務(wù)器都會(huì)實(shí)時(shí)地得到更新掉蔬。在部署好主從服務(wù)器之后廊宪,客戶端就可以向任意一個(gè)從服務(wù)器發(fā)送讀請(qǐng)求了,而不必再像之前一樣女轿,總是把每個(gè)讀請(qǐng)求都發(fā)送給主服務(wù)器箭启。

2 Redis復(fù)制的啟動(dòng)過程

image.png

3 主從的配置

單機(jī)配置一主多從
  1. 主服務(wù)器通過默認(rèn)的redis.conf啟動(dòng)redis-server
  2. 復(fù)制主服務(wù)器的redis.conf為兩個(gè)新的文件redis_slave1.conf和redis_slave2.conf
  3. 分別添加如下配置
# 端口
# 或者port 6381
port 6382
# AOF和快照文件文件夾
# dir /usr/local/var/db/redis_slave1/
dir /usr/local/var/db/redis_slave2/
# 從節(jié)點(diǎn)要跟隨的主節(jié)點(diǎn)
slaveof 127.0.0.1 6379
# 如果設(shè)置了密碼,就要設(shè)置
masterauth master-password
  1. 從服務(wù)器分別通過redis_slave1.conf和redis_slave2.conf啟動(dòng)
單機(jī)一主多從結(jié)果
# 主節(jié)點(diǎn)
32314:M 13 Feb 2019 18:19:34.807 * Replica 127.0.0.1:6381 asks for synchronization
32314:M 13 Feb 2019 18:19:34.807 * Full resync requested by replica 127.0.0.1:6381
32314:M 13 Feb 2019 18:19:34.807 * Starting BGSAVE for SYNC with target: disk
32314:M 13 Feb 2019 18:19:34.807 * Background saving started by pid 33175
33175:C 13 Feb 2019 18:19:34.808 * DB saved on disk
32314:M 13 Feb 2019 18:19:34.838 * Background saving terminated with success
32314:M 13 Feb 2019 18:19:34.839 * Synchronization with replica 127.0.0.1:6381 succeeded

32314:M 13 Feb 2019 18:22:01.275 * Replica 127.0.0.1:6382 asks for synchronization
32314:M 13 Feb 2019 18:22:01.275 * Full resync requested by replica 127.0.0.1:6382
32314:M 13 Feb 2019 18:22:01.275 * Starting BGSAVE for SYNC with target: disk
32314:M 13 Feb 2019 18:22:01.276 * Background saving started by pid 33436
33436:C 13 Feb 2019 18:22:01.277 * DB saved on disk
32314:M 13 Feb 2019 18:22:01.359 * Background saving terminated with success
32314:M 13 Feb 2019 18:22:01.360 * Synchronization with replica 127.0.0.1:6382 succeeded
# 從節(jié)點(diǎn)
33174:S 13 Feb 2019 18:19:34.806 * MASTER <-> REPLICA sync started
33174:S 13 Feb 2019 18:19:34.806 * Non blocking connect for SYNC fired the event.
33174:S 13 Feb 2019 18:19:34.807 * Master replied to PING, replication can continue...
33174:S 13 Feb 2019 18:19:34.807 * Partial resynchronization not possible (no cached master)
33174:S 13 Feb 2019 18:19:34.807 * Full resync from master: deb0cb0abde947bba19c5224a3664e27c90a6b65:0
33174:S 13 Feb 2019 18:19:34.839 * MASTER <-> REPLICA sync: receiving 175 bytes from master
33174:S 13 Feb 2019 18:19:34.839 * MASTER <-> REPLICA sync: Flushing old data
33174:S 13 Feb 2019 18:19:34.839 * MASTER <-> REPLICA sync: Loading DB in memory
33174:S 13 Feb 2019 18:19:34.839 * MASTER <-> REPLICA sync: Finished with success
33174:S 13 Feb 2019 18:19:34.839 * Background append only file rewriting started by pid 33176
33174:S 13 Feb 2019 18:19:34.863 * AOF rewrite child asks to stop sending diffs.
33176:C 13 Feb 2019 18:19:34.863 * Parent agreed to stop sending diffs. Finalizing AOF...
33176:C 13 Feb 2019 18:19:34.863 * Concatenating 0.00 MB of AOF diff received from parent.
33176:C 13 Feb 2019 18:19:34.863 * SYNC append only file rewrite performed
33174:S 13 Feb 2019 18:19:34.909 * Background AOF rewrite terminated with success
33174:S 13 Feb 2019 18:19:34.910 * Residual parent diff successfully flushed to the rewritten AOF (0.00 MB)
33174:S 13 Feb 2019 18:19:34.910 * Background AOF rewrite finished successfully
不同機(jī)器上配置一主多從

如果redis-server在不同的機(jī)器上谈喳,只需要以下兩個(gè)配置即可

# 從節(jié)點(diǎn)要跟隨的主節(jié)點(diǎn)
slaveof 127.0.0.1 6379
# 如果設(shè)置了密碼册烈,就要設(shè)置
masterauth master-password

4 通過命令設(shè)置從服務(wù)器

  1. 可以通過向運(yùn)行中的從服務(wù)器發(fā)送SLAVEOF命令來將其設(shè)置為從服務(wù)器。
  2. 如果用戶使用的是 SLAVEOF配置選項(xiàng),那么Redis在啟動(dòng)時(shí)首先會(huì)載入當(dāng)前可用的任何快照文件或者AOF文件赏僧,然后連接主服務(wù)器并執(zhí)行上述的復(fù)制過程大猛。如果用戶使用的是SLAVEOF命令,那么Redis會(huì)立即嘗試連接主服務(wù)器淀零,并在連接成功之后挽绩,開始上述復(fù)制過程。

5 其他細(xì)節(jié)

  1. 采用異步復(fù)制
  2. 從服務(wù)器在與主服務(wù)器進(jìn)行初始連接時(shí)驾中,數(shù)據(jù)庫中原有的所有數(shù)據(jù)都將丟失唉堪,并被替換成主服務(wù)器發(fā)來的數(shù)據(jù)。
  3. Reds不支持主主復(fù)制肩民,被互相設(shè)置為主服務(wù)器的兩個(gè)Redis實(shí)例只會(huì)持續(xù)地占用大量處理器資源并且連續(xù)不斷地嘗試與對(duì)方進(jìn)行通信唠亚,根據(jù)客戶端連接的服務(wù)器的不同,客戶端的請(qǐng)求可能會(huì)得到不一致的數(shù)據(jù)持痰,或者完全得不到數(shù)據(jù)灶搜。
  4. 當(dāng)多個(gè)從服務(wù)器嘗試連接同一個(gè)主服務(wù)器的時(shí)候,可能出現(xiàn)兩種情況:如果步驟3尚未執(zhí)行工窍,所有從服務(wù)器都會(huì)接收到相同的快照文件和相同的緩沖區(qū)寫命令割卖;如果已經(jīng)正在執(zhí)行或已經(jīng)執(zhí)行,當(dāng)主服務(wù)器與較早進(jìn)行連接的從服務(wù)器執(zhí)行完復(fù)制所需的5個(gè)步驟之后患雏,主服務(wù)器會(huì)與新連接的從服務(wù)器執(zhí)行一次新的步驟1至步驟5鹏溯。
  5. 從服務(wù)器也可以有自己從服務(wù)器。
  6. 可以通過INFO命令查看配置的詳情淹仑,如下所示:
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6381,state=online,offset=2086,lag=0
slave1:ip=127.0.0.1,port=6382,state=online,offset=2086,lag=1
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末丙挽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子攻人,更是在濱河造成了極大的恐慌取试,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怀吻,死亡現(xiàn)場離奇詭異瞬浓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蓬坡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門猿棉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人屑咳,你說我怎么就攤上這事萨赁。” “怎么了兆龙?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵杖爽,是天一觀的道長。 經(jīng)常有香客問我,道長慰安,這世上最難降的妖魔是什么腋寨? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮化焕,結(jié)果婚禮上萄窜,老公的妹妹穿的比我還像新娘。我一直安慰自己撒桨,他們只是感情好查刻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凤类,像睡著了一般穗泵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谜疤,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天火欧,我揣著相機(jī)與錄音,去河邊找鬼茎截。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赶盔,可吹牛的內(nèi)容都是我干的企锌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼于未,長吁一口氣:“原來是場噩夢啊……” “哼撕攒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起烘浦,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤抖坪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后闷叉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體擦俐,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年握侧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚯瞧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡品擎,死狀恐怖埋合,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情萄传,我是刑警寧澤甚颂,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響振诬,放射性物質(zhì)發(fā)生泄漏蹭睡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一贷揽、第九天 我趴在偏房一處隱蔽的房頂上張望棠笑。 院中可真熱鬧,春花似錦禽绪、人聲如沸蓖救。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽循捺。三九已至,卻和暖如春雄人,著一層夾襖步出監(jiān)牢的瞬間从橘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工础钠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恰力,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓旗吁,卻偏偏與公主長得像踩萎,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子很钓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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

  • 在Redis的持久化中曾提到香府,Redis高可用的方案包括持久化、主從復(fù)制(及讀寫分離)码倦、哨兵和集群企孩。其中持久化側(cè)重...
    不變甄心閱讀 1,496評(píng)論 0 5
  • 本篇就一下方面展開分析 如何使用主從復(fù)制? 主從復(fù)制的原理(重點(diǎn)是全量復(fù)制和部分復(fù)制袁稽、以及心跳機(jī)制) 實(shí)際應(yīng)用中需...
    lucode閱讀 994評(píng)論 0 5
  • 文章已經(jīng)放到github上 勿璃,如果對(duì)您有幫助 請(qǐng)給個(gè)star[https://github.com/qqxuanl...
    尼爾君閱讀 2,286評(píng)論 0 22
  • 【本教程目錄】 1.redis是什么2.redis的作者3.誰在使用redis4.學(xué)會(huì)安裝redis5.學(xué)會(huì)啟動(dòng)r...
    徐猿猿閱讀 1,869評(píng)論 0 35
  • redis是什么 redis是一個(gè)開源的、使用C語言編寫的运提、支持網(wǎng)絡(luò)交互的蝗柔、可基于內(nèi)存也可持久化的Key-Valu...
    燁楓_邱閱讀 775評(píng)論 0 6