2022年Redis最新面試題第5篇 - Redis集群

大家好,我是漫步coding, 最近在整理2022年Redis最新面試題, 大家也可以通過我下面的博客地址在線閱讀,?今天講講第5篇 - Redis集群。本文首發(fā)于公眾號:漫步coding

2022年Redis最新面試題目錄

Redis基礎(chǔ)知識
Redis數(shù)據(jù)結(jié)構(gòu)
Redis事務(wù)
Redis數(shù)據(jù)持久化
Redis集群
Redis淘汰策略
Redis分布式鎖
Redis緩存問題
運維和部署

概要

Redis 是單進(jìn)程單線程的嘀略?

是否使用過 Redis 集群钦讳,集群的原理是什么冲九?

可以簡單說說你對Redis Sentinel的理解

Redis Sentinal和Redis Cluster的區(qū)別

Redis 的同步機(jī)制了解么?

Redis 集群最大節(jié)點個數(shù)是多少膨俐?

Redis 是單進(jìn)程單線程的缩歪?

出現(xiàn)概率: ★★★★

大家所熟知的 Redis 確實是單線程模型归薛,指的是執(zhí)行 Redis 命令的核心模塊是單線程的,而不是整個 Redis 實例就一個線程匪蝙,Redis 其他模塊還有各自模塊的線程的主籍。

下面這個解釋比較好:


同時Redis 采用網(wǎng)絡(luò) I/O 多路復(fù)用技術(shù),來保證在多連接的時候系統(tǒng)的高吞吐量逛球。關(guān)于 I/O 多路復(fù)用(又被稱為“事件驅(qū)動”)千元,首先要理解的是,操作系統(tǒng)為你提供了一個功能需忿,當(dāng)你的某個 socket 可讀或者可寫的時候诅炉,它可以給你一個通知蜡歹。這樣當(dāng)配合非阻塞的 socket 使用時屋厘,只有當(dāng)系統(tǒng)通知我哪個描述符可讀了,我才去執(zhí)行 read 操作月而,可以保證每次 read 都能讀到有效數(shù)據(jù)而不做純返回 -1 和 EAGAIN 的無用功汗洒,寫操作類似。

目前多路復(fù)用主要有三種技術(shù):select父款,poll溢谤,epoll瞻凤。epoll 是最新的也是目前最好的多路復(fù)用技術(shù)。

采用多路 I/O 復(fù)用技術(shù)可以讓單個線程高效的處理多個連接請求(盡量減少網(wǎng)絡(luò) I/O 的時間消耗)世杀,且 Redis 在內(nèi)存中操作數(shù)據(jù)的速度非撤Р危快,也就是說內(nèi)存內(nèi)的操作不會成為影響 Redis 性能的瓶頸瞻坝,基于這兩點 Redis 具有很高的吞吐量蛛壳。

是否使用過 Redis 集群,集群的原理是什么所刀?

出現(xiàn)概率: ★★★

Redis Cluster 是 在?3.0 版本正式推出的高可用集群方案衙荐,相比Redis Sentinel,Redis Cluster方案不需要額外部署Sentinel集群浮创,而是通過集群內(nèi)部通信實現(xiàn)集群監(jiān)控忧吟,故障時主從切換;同時斩披,支持內(nèi)部基于哈希實現(xiàn)數(shù)據(jù)分片溜族,支持動態(tài)水平擴(kuò)容。

Redis集群有多個master垦沉,可以減小訪問瞬斷問題的影響斩祭;若集群中有一個master掛了,正好需要向這個master寫數(shù)據(jù)乡话,這個操作需要等待一下摧玫;但是向其他master節(jié)點寫數(shù)據(jù)是不受影響的。

Redis集群有多個master绑青,可以提供更高的并發(fā)量诬像;

Redis集群可以分片存儲,這樣就可以存儲更多的數(shù)據(jù)闸婴;


將整個數(shù)據(jù)集按照一定規(guī)則分配到多個節(jié)點上坏挠,稱為數(shù)據(jù)分片,Redis Cluster采用的分片方案是哈希分片, 基本原理如下:Redis Cluster首先定義了編號0 ~ 16383的區(qū)間邪乍,稱為槽降狠,所有的鍵根據(jù)哈希函數(shù)映射到0 ~ 16383整數(shù)槽內(nèi),計算公式:slot=CRC16(key)&16383庇楞。每一個節(jié)點負(fù)責(zé)維護(hù)一部分槽以及槽所映射的鍵值數(shù)據(jù)榜配。


可以簡單說說你對Redis Sentinel的理解

出現(xiàn)概率: ★★★

Redis Sentinel是官方從Redis 2.6版本提供的高可用方案,在Redis主從復(fù)制集群的基礎(chǔ)上吕晌,增加Sentinel集群監(jiān)控整個Redis集群蛋褥。當(dāng)Redis集群master節(jié)點發(fā)生故障時,Sentinel進(jìn)行故障切換睛驳,選舉出新的master烙心,同時Sentinel本身支持高可用集群部署膜廊。


Redis Sentinal和Redis Cluster的區(qū)別

出現(xiàn)概率: ★★★

Redis Sentinal和Redis Cluster的區(qū)別主要在于側(cè)重點不同:

Redis Sentinal主要聚焦于高可用,在master宕機(jī)時會自動將slave提升為master淫茵,繼續(xù)提供服務(wù)爪瓜。

Redis Cluster主要聚焦于擴(kuò)展性,在單個redis內(nèi)存不足時匙瘪,使用Cluster進(jìn)行分片存儲钥勋。

Redis 的同步機(jī)制了解么?

出現(xiàn)概率: ★★★

主從同步辆苔。第一次同步時算灸,主節(jié)點做一次bgsave,并同時將后續(xù)修改操作記錄到內(nèi)存buffer驻啤,待完成后將rdb文件全量同步到復(fù)制節(jié)點菲驴,復(fù)制節(jié)點接受完成后將rdb鏡像加載到內(nèi)存。加載完成后骑冗,再通知主節(jié)點將期間修改的操作記錄同步到復(fù)制節(jié)點進(jìn)行重放就完成了同步過程赊瞬。

全備份過程中,在slave啟動時贼涩,會向其master發(fā)送一條SYNC消息巧涧,master收到slave的這條消息之后,將可能啟動后臺進(jìn)程進(jìn)行備份遥倦,備份完成之后就將備份的數(shù)據(jù)發(fā)送給slave谤绳,初始時的全同步機(jī)制是這樣的:


Redis 集群最大節(jié)點個數(shù)是多少?

出現(xiàn)概率: ★★★

這個比較偏袒哥, 知道的人不多缩筛, 如果你可以答出最大節(jié)點數(shù),然后給出解釋, 估計面試官的好感度, 會蹭蹭的往上漲堡称。

16384 個瞎抛。這是因為Redis 集群并沒有使用一致性hash,而是引入了哈希槽的概念却紧。Redis 集群有16384個哈希槽桐臊,每個key通過CRC16校驗后對16384取模來決定放置哪個槽,集群的每個節(jié)點負(fù)責(zé)一部分hash槽晓殊。

但為什么哈希槽的數(shù)量是16384(2^14)個呢?

在redis節(jié)點發(fā)送心跳包時需要把所有的槽放到這個心跳包里断凶,以便讓節(jié)點知道當(dāng)前集群信息,16384=16k挺物,在發(fā)送心跳包時使用char進(jìn)行bitmap壓縮后是2k(2 * 8 (8 bit) * 1024(1k) = 16K)懒浮,也就是說使用2k的空間創(chuàng)建了16k的槽數(shù)飘弧。

雖然使用CRC16算法最多可以分配65535(2^16-1)個槽位识藤,65535=65k砚著,壓縮后就是8k(8 * 8 (8 bit) * 1024(1k) =65K),也就是說需要需要8k的心跳包痴昧,Redis作者認(rèn)為這樣做不太值得稽穆;并且一般情況下一個redis集群不會有超過1000個master節(jié)點,所以16k的槽位是個比較合適的選擇赶撰。

關(guān)于Redis作者討論為什么這么設(shè)計, 可以看這里舌镶。

也歡迎關(guān)注我的公眾號:?漫步coding。一起交流, 在coding的世界里漫步, ?? ?回復(fù):?redis, 免費獲取最新Redis面試題(含答案)豪娜。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末餐胀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子瘤载,更是在濱河造成了極大的恐慌否灾,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸣奔,死亡現(xiàn)場離奇詭異墨技,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)挎狸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進(jìn)店門扣汪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锨匆,你說我怎么就攤上這事崭别。” “怎么了恐锣?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵紊遵,是天一觀的道長。 經(jīng)常有香客問我侥蒙,道長暗膜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任鞭衩,我火速辦了婚禮学搜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘论衍。我一直安慰自己瑞佩,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布坯台。 她就那樣靜靜地躺著炬丸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稠炬,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天焕阿,我揣著相機(jī)與錄音,去河邊找鬼首启。 笑死暮屡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的毅桃。 我是一名探鬼主播褒纲,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼钥飞!你這毒婦竟也來了莺掠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤读宙,失蹤者是張志新(化名)和其女友劉穎汁蝶,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體论悴,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡掖棉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了膀估。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幔亥。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖察纯,靈堂內(nèi)的尸體忽然破棺而出帕棉,到底是詐尸還是另有隱情,我是刑警寧澤饼记,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布香伴,位于F島的核電站,受9級特大地震影響具则,放射性物質(zhì)發(fā)生泄漏即纲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一博肋、第九天 我趴在偏房一處隱蔽的房頂上張望低斋。 院中可真熱鬧,春花似錦匪凡、人聲如沸膊畴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唇跨。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間买猖,已是汗流浹背改橘。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留政勃,地道東北人唧龄。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓兼砖,卻偏偏與公主長得像奸远,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子讽挟,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,576評論 2 349

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