圖解 Redis,還有人看不懂?
閱讀本文大概需要 11 分鐘。
來(lái)自:極客重生
什么是 Redis?


不經(jīng)常更改且經(jīng)常被請(qǐng)求的數(shù)據(jù) 任務(wù)關(guān)鍵性較低且經(jīng)常變動(dòng)的數(shù)據(jù)



Redis 架構(gòu)
單個(gè) Redis 實(shí)例 Redis 高可用性 Redis 哨兵 Redis 集群
單個(gè) Redis 實(shí)例

Redis 高可用性

Redis 復(fù)制
例如,兩個(gè)實(shí)例(主實(shí)例和從實(shí)例)具有相同的復(fù)制 ID,但偏移量相差幾百個(gè)命令,這意味著如果在實(shí)例上重放這些偏移量后面的命令,它們將具有相同的數(shù)據(jù)集?,F(xiàn)在,如果復(fù)制 ID 完全不同,并且我們不知道新降級(jí)(或重新加入)從節(jié)點(diǎn)的先前復(fù)制 ID(沒有共同祖先)。我們將需要執(zhí)行昂貴的全量同步。
Redis 哨兵(Sentinel)

監(jiān)控——確保主從實(shí)例按預(yù)期工作。 通知——通知系統(tǒng)管理員 Redis 實(shí)例中的事件。 故障轉(zhuǎn)移管理——如果主實(shí)例不可用并且足夠多的(法定數(shù)量)節(jié)點(diǎn)同意這是真的,Sentinel 節(jié)點(diǎn)可以啟動(dòng)故障轉(zhuǎn)移。 配置管理——Sentinel 節(jié)點(diǎn)還充當(dāng)當(dāng)前主 Redis 實(shí)例的發(fā)現(xiàn)服務(wù)。

如果哨兵節(jié)點(diǎn)超出法定人數(shù)怎么辦? 如果網(wǎng)絡(luò)分裂將舊的主實(shí)例置于少數(shù)群體中怎么辦?這些寫入會(huì)發(fā)生什么?(劇透:當(dāng)系統(tǒng)完全恢復(fù)時(shí)它們會(huì)丟失) 如果哨兵節(jié)點(diǎn)和客戶端節(jié)點(diǎn)(應(yīng)用程序節(jié)點(diǎn))的網(wǎng)絡(luò)拓?fù)溴e(cuò)位會(huì)發(fā)生什么?
Redis 集群

Redis Cluster 允許 Redis 的水平擴(kuò)展。
M1 包含從 0 到 8191 的哈希槽。 M2 包含從 8192 到 16383 的哈希槽。
M1 包含從 0 到 5460 的哈希槽。 M2 包含從 5461 到 10922 的哈希槽。 M3 包含從 10923 到 16383 的哈希槽。
Gossiping 協(xié)議
Redis 持久化模型

無(wú)持久化
RDB文件
AOF
為什么不兼得?
Forking

推薦閱讀:
微軟開源的命令行神器成 Win 11 默認(rèn)工具,網(wǎng)友:是時(shí)候徹底棄用 cmd 了!
記住,永遠(yuǎn)不要使用 Redis 過(guò)期監(jiān)聽實(shí)現(xiàn)定時(shí)任務(wù)!
互聯(lián)網(wǎng)初中高級(jí)大廠面試題(9個(gè)G) 內(nèi)容包含Java基礎(chǔ)、JavaWeb、MySQL性能優(yōu)化、JVM、鎖、百萬(wàn)并發(fā)、消息隊(duì)列、高性能緩存、反射、Spring全家桶原理、微服務(wù)、Zookeeper......等技術(shù)棧!
?戳閱讀原文領(lǐng)取! 朕已閱
評(píng)論
圖片
表情


