Redis 復(fù)盤

image.png

Redis 復(fù)盤

一、應(yīng)用層

Redis是內(nèi)存數(shù)據(jù)庫蚕苇、他的所有操作都是在內(nèi)存中去執(zhí)行、所以他效率也非常高凿叠;雖然他也有持久化的操作涩笤、比如 RDB 全量 、AOF 的增量 但是他在不開啟AOF的情況下效率是不會被影響的盒件。而RDB存儲也只是鏡像備份蹬碧,通過fork子線程來操作,所以不影響客戶端對Redis服務(wù)端的讀寫性能炒刁。

RDB提供了分鐘級別的同步刷盤恩沽;如果掛了的情況也會導(dǎo)致分鐘級別的數(shù)據(jù)丟失。存儲是二進(jìn)制的文件存儲空間要比AOF要小翔始。數(shù)據(jù)恢復(fù)也會比AOF要快很多罗心。

AOF提供三種策略:每秒進(jìn)行同步片吊,每修改一次同步,和不同步协屡。如果對數(shù)據(jù)一致性要求強(qiáng)烈的話AOF是再好不過了俏脊。但是存儲占用很大,因為都是字符串肤晓。比如設(shè)置每秒爷贫;如果系統(tǒng)掛了也是1秒的數(shù)據(jù)丟失。

Redis也提供了很豐富的數(shù)據(jù)結(jié)構(gòu)我們可以根據(jù)業(yè)務(wù)情況去選擇比如常用的string/hash/set/list等等....

二补憾、網(wǎng)絡(luò)層

Redis網(wǎng)絡(luò)層是通過單線程Reactor模型來處理客戶端/服務(wù)端連接的漫萄。而Reactor 底層用的IO多路復(fù)用Epoll技術(shù)來實現(xiàn),而Epoll 處理多少連接是受限于系統(tǒng)句柄數(shù),而系統(tǒng)句柄數(shù)受限于系統(tǒng)物理內(nèi)存盈匾,所以在物理內(nèi)存夠用的情況下腾务;能夠處理非常多的連接數(shù);理論上是無上限的。
這也是Redis官網(wǎng)數(shù)據(jù)說能夠秒級處理10WQPS的勇氣削饵。

在Redis6.0以后使用的是多線程來實現(xiàn)岩瘦、其實也是Reactor的加強(qiáng)版;單Reactor多線程,其實彌補了大Key處理的能力窿撬,因為在單Reactor模型的情況下启昧,如果有大Key處理會有阻塞的情況影響了整體處理指令效率,通過多線程來彌補了這個缺點劈伴,提高了整體吞吐率(所以很多時候別人說memcached處理大Key能力優(yōu)于Redis就是用了多線程)密末。

三、存儲層

Redis存儲層有兩種模式分別RDB跛璧、AOF严里;

  • RDB 是全量備份存儲的是 key value二進(jìn)制文件,可以設(shè)置1秒同步多少個key追城;如果是在極端的情況下會造成丟失數(shù)據(jù)的可能性刹碾。比如說在通過BGSAVE fork子線程備份期間服務(wù)器掛了。
  • AOF 是增量備份 存儲的是 所有語句包括key vale內(nèi)容;文件占用內(nèi)存比較大(不過AOF有個優(yōu)化機(jī)制就是重寫漓柑,定期會把AOF文件合并一次如果多個指令針對同一個Key操作會合并起來 降低冗余存儲壓力)教硫,可以設(shè)置每個指令都刷磁盤,所以在極端的情況下只會丟失1個指令數(shù)據(jù)辆布。就是會性能會非常低瞬矩。

如果系統(tǒng)同時開啟RDB/AOF 其實就是一個NOSQL數(shù)據(jù)庫了、但是在系統(tǒng)掛了恢復(fù)的時候會優(yōu)先使用AOF來恢復(fù)锋玲。

四景用、數(shù)據(jù)結(jié)構(gòu)層

  • Redis 數(shù)據(jù)結(jié)構(gòu)是屬于Hash散列結(jié)構(gòu);這種數(shù)據(jù)結(jié)構(gòu)查找時間復(fù)雜度是O(1)的非常快,比如Redis默認(rèn)是有16384的槽位;我一個key存儲的時候,他會通過crc16(Key)%16384去定位到那個槽位去存儲伞插。
  • 那么取值的時候也也根據(jù)過crc16(Key)%16384去定位到那個槽位去取數(shù)據(jù)割粮。不像mysql B+數(shù)(時間復(fù)雜度O(logn))的數(shù)據(jù)結(jié)構(gòu)還要通過索引去遍歷,去比較才能夠查到最終的值媚污;在Redis集群的時候比如有三個節(jié)點他會把槽位均衡去分配到各個節(jié)點舀瓢。

五、架構(gòu)層

redis特點就是協(xié)調(diào)者+主從+集群+分片

  • 協(xié)調(diào)者:監(jiān)控主從狀態(tài)耗美、如果掛了通過協(xié)調(diào)者做切換達(dá)到故障轉(zhuǎn)移的效果京髓。
  • 主從:主從提高性能、可用性商架、主從都可以提供讀能力 分擔(dān)壓力提高吞吐率堰怨、當(dāng)主節(jié)點掛了、可切換從節(jié)點提高可用性蛇摸。
  • 集群:多個主從組成小集群备图;主要提高寫能力;畢竟數(shù)據(jù)寫入只有master才能寫赶袄;
  • 分片:降低存儲壓力揽涮、把數(shù)據(jù)分片到多個節(jié)點中;擴(kuò)展充分提高存儲能力弃鸦。

六绞吁、Redis缺點

  • redis 宕機(jī)可能會造成數(shù)據(jù)丟失問題。
  • redis 做分布式鎖唬格;主從切換會導(dǎo)致重復(fù)獲鎖問題。
  • redis 高峰20W QPS - 會造成偶發(fā)耗時較長的情況颜说、可能達(dá)到他的瓶頸购岗。如果追求極致性能不建議使用。
  • redis 大Key處理可能會導(dǎo)致整體性能下降(畢竟6.0之前的版本都是單線程處理)门粪。
  • redis 集群擴(kuò)容需要重新分配槽位;線上擴(kuò)容遷移槽位非常麻煩喊积,帶來不可控風(fēng)險。
  • redis 緩存穿透/雪崩問題玄妈、需要通過布隆過濾器乾吻、或者null key、或者分布式鎖來解決拟蜻。
  • redis mysql強(qiáng)一致性問題;需要通過Cannl來同步實現(xiàn);讓Cannl作為mysql從節(jié)點;同步binlog文件绎签;Cannl會把binlog轉(zhuǎn)換成json數(shù)據(jù);解析json數(shù)據(jù)再寫到redis中!

七酝锅、使用場景

诡必。。搔扁。爸舒。結(jié)合自己業(yè)務(wù)來看蟋字。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扭勉,隨后出現(xiàn)的幾起案子鹊奖,更是在濱河造成了極大的恐慌,老刑警劉巖涂炎,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忠聚,死亡現(xiàn)場離奇詭異,居然都是意外死亡璧尸,警方通過查閱死者的電腦和手機(jī)咒林,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爷光,“玉大人垫竞,你說我怎么就攤上這事≈颍” “怎么了欢瞪?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長徐裸。 經(jīng)常有香客問我遣鼓,道長,這世上最難降的妖魔是什么重贺? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任骑祟,我火速辦了婚禮,結(jié)果婚禮上气笙,老公的妹妹穿的比我還像新娘次企。我一直安慰自己,他們只是感情好潜圃,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布缸棵。 她就那樣靜靜地躺著,像睡著了一般谭期。 火紅的嫁衣襯著肌膚如雪堵第。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天隧出,我揣著相機(jī)與錄音踏志,去河邊找鬼。 笑死鸳劳,一個胖子當(dāng)著我的面吹牛庶灿,可吹牛的內(nèi)容都是我干的着逐。 我是一名探鬼主播声登,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼傍妒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起摸柄,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤颤练,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后驱负,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗦玖,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年跃脊,在試婚紗的時候發(fā)現(xiàn)自己被綠了宇挫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡酪术,死狀恐怖器瘪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绘雁,我是刑警寧澤橡疼,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站庐舟,受9級特大地震影響欣除,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挪略,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一历帚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杠娱,春花似錦抹缕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趴俘。三九已至睹簇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寥闪,已是汗流浹背太惠。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留疲憋,地道東北人凿渊。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親埃脏。 傳聞我的和親對象是個殘疾皇子搪锣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

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