成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

架構(gòu)選型,究竟啥時候選Redis?

開發(fā) 開發(fā)工具 架構(gòu) Redis
redis是互聯(lián)網(wǎng)分層架構(gòu)中,最常用的KV緩存,但不少同學(xué)仍然不知道,為啥要選擇redis。

redis是互聯(lián)網(wǎng)分層架構(gòu)中,最常用的KV緩存,但不少同學(xué)仍然不知道,為啥要選擇redis。

畫外音:與之對比最多的,是memcache。

一、復(fù)雜數(shù)據(jù)結(jié)構(gòu),選擇redis更合適

value是哈希,列表,集合,有序集合這類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)時,會選擇redis,因為mc無法滿足這些需求。

最典型的場景,用戶訂單列表,用戶消息,帖子評論列表等。

二、持久化,選擇redis更合適

mc無法滿足持久化的需求,只得選擇redis。但是,這里要提醒的是,真的使用對了redis的持久化功能么?

千萬不要把redis當作數(shù)據(jù)庫用:

  • redis的定期快照不能保證數(shù)據(jù)不丟失;
  • redis的AOF會降低效率,并且不能支持太大的數(shù)據(jù)量;

不要期望redis做固化存儲會比mysql做得好,不同的工具做各自擅長的事情,把redis當作數(shù)據(jù)庫用,這樣的設(shè)計八成是錯誤的。

緩存場景,開啟固化功能,有什么利弊?

如果只是緩存場景,數(shù)據(jù)存放在數(shù)據(jù)庫,緩存在redis,此時如果開啟固化功能:

優(yōu)點是,redis掛了再重啟,內(nèi)存里能夠快速恢復(fù)熱數(shù)據(jù),不會瞬時將壓力壓到數(shù)據(jù)庫上,沒有一個cache預(yù)熱的過程。

缺點是,在redis掛了的過程中,如果數(shù)據(jù)庫中有數(shù)據(jù)的修改,可能導(dǎo)致redis重啟后,數(shù)據(jù)庫與redis的數(shù)據(jù)不一致。

因此,只讀場景,或者允許一些不一致的業(yè)務(wù)場景,可以嘗試開啟redis的固化功能。

三、高可用,選擇redis更合適

redis天然支持集群功能,可以實現(xiàn)主動復(fù)制,讀寫分離。

redis官方也提供了sentinel集群管理工具,能夠?qū)崿F(xiàn)主從服務(wù)監(jiān)控,故障自動轉(zhuǎn)移,這一切,對于客戶端都是透明的,無需程序改動,也無需人工介入。

畫外音:memcache,要想要實現(xiàn)高可用,需要進行二次開發(fā),例如客戶端的雙讀雙寫,或者服務(wù)端的集群同步。

但是,這里要提醒的是,大部分業(yè)務(wù)場景,緩存真的需要高可用么?

  • 緩存場景,很多時候,是允許cache miss;
  • 緩存掛了,很多時候可以通過DB讀取數(shù)據(jù);

所以,需要認真剖析業(yè)務(wù)場景,高可用,是否真的是對緩存的主要需求?

畫外音:即時通訊業(yè)務(wù)中,用戶的在線狀態(tài),就有高可用需求。

四、存儲的內(nèi)容比較大,選擇redis更合適

memcache的value存儲,最大為1M,如果存儲的value很大,只能使用redis。

當然,redis與memcache相比,由于底層實現(xiàn)機制的差異,也有一些“劣勢”的情況。

情況一:由于內(nèi)存分配機制的差異,redis可能導(dǎo)致內(nèi)存碎片

memcache使用預(yù)分配內(nèi)存池的方式管理內(nèi)存,能夠省去內(nèi)存分配時間。

redis則是臨時申請空間,可能導(dǎo)致碎片。

從這一點上,mc會更快一些。

情況二:由于虛擬內(nèi)存使用的差異,redis可能會刷盤影響性能

memcache把所有的數(shù)據(jù)存儲在物理內(nèi)存里。

redis有自己的VM機制,理論上能夠存儲比物理內(nèi)存更多的數(shù)據(jù),當數(shù)據(jù)超量時,會引發(fā)swap,把冷數(shù)據(jù)刷到磁盤上。從這一點上,數(shù)據(jù)量大時,mc會更快一些。

畫外音:新版本redis已經(jīng)優(yōu)化。

情況三:由于網(wǎng)絡(luò)模型的差異,redis可能會因為CPU計算影響IO調(diào)度

memcache使用非阻塞IO復(fù)用模型,redis也是使用非阻塞IO復(fù)用模型。

但由于redis還提供一些非KV存儲之外的排序,聚合功能,在執(zhí)行這些功能時,復(fù)雜的CPU計算,會阻塞整個IO調(diào)度。

從這一點上,由于redis提供的功能較多,mc會更快一些。

情況四:由于線程模型的差異,redis難以利用多核特效提升性能

memcache使用多線程,主線程監(jiān)聽,worker子線程接受請求,執(zhí)行讀寫,這個過程中,可能存在鎖沖突。

redis使用單線程,雖無鎖沖突,但難以利用多核的特性提升整體吞吐量。

從這一點上,mc會快一些。

情況五:由于缺乏auto-sharding,redis只能手動水平擴展

不管是redis還是memcache,服務(wù)端集群沒有天然支持水平擴展,需要在客戶端進行分片,這其實對調(diào)用方并不友好。如果能服務(wù)端集群能夠支持水平擴展,會更完美一些。

最后說一點,可能是很多人喜歡redis的原因之一:源碼可讀性高,代碼質(zhì)量很高。

看過redis和memcache的源碼,從可讀性上說,redis是我見過代碼最清爽的軟件,甚至沒有之一,或許簡單是redis設(shè)計的初衷,編譯redis甚至不需要configure,不需要依賴第三方庫,一個make就搞定了。

而memcache源碼,可能是考慮了太多的擴展性,多系統(tǒng)的兼容性,代碼不清爽,看起來費勁。

例如網(wǎng)絡(luò)IO的部分,redis源碼1-2個文件就搞定了,mc使用了libevent,一個fd傳過來傳過去,又pipe又線程傳遞的,特別容易把人繞暈。

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】

戳這里,看該作者更多好文

 

責任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2022-07-20 08:06:57

MySQL表鎖Innodb

2022-10-24 08:02:14

MySQL索引類型

2012-05-16 09:17:54

Windows Pho諾基亞

2020-01-05 23:28:51

MQ消息進程

2021-12-26 00:48:05

一致性視圖數(shù)據(jù)庫

2019-08-23 07:58:51

GDPR安全隱私數(shù)據(jù)安全

2022-09-18 21:18:43

架構(gòu)Redis

2020-09-15 09:55:13

架構(gòu)師架構(gòu)選型

2019-08-30 10:08:33

NodejsJava語言

2020-06-11 09:18:34

動靜分離架構(gòu)架構(gòu)設(shè)計開發(fā)

2022-08-19 14:06:56

前端架構(gòu)技術(shù)

2021-01-31 18:58:31

redismemcache源碼

2018-06-24 09:12:33

redismemcache源碼

2024-08-09 09:00:00

Akamai云服務(wù)

2020-02-12 11:34:56

架構(gòu)平滑上云機房遷移

2019-06-04 14:36:04

高并發(fā)Java架構(gòu)

2021-08-30 11:36:23

微服務(wù)開發(fā)技術(shù)

2021-02-18 14:25:52

MySQL數(shù)據(jù)庫架構(gòu)

2020-11-25 09:56:48

架構(gòu)運維技術(shù)

2022-06-15 10:04:51

存儲選型MySQL
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品久久久久久吹潮 | 一级毛片在线播放 | 欧美成人一区二区三区片免费 | 北条麻妃一区二区三区在线观看 | 中文字幕日韩欧美一区二区三区 | 欧美亚洲第一区 | 日韩精品视频在线 | 国产精品乱码一二三区的特点 | 在线播放国产一区二区三区 | 亚洲三级免费看 | 亚洲视频一区在线 | 亚洲精品综合一区二区 | 亚洲欧洲精品成人久久奇米网 | 一级做a爰片性色毛片16美国 | 伊人伊成久久人综合网站 | 日韩成人影院 | 国产精品久久久久久久久久久免费看 | 久久亚洲美女 | 狠狠干av| 国产精品精品视频一区二区三区 | 成人精品福利 | 色香蕉在线 | 久久成人午夜 | 日本高清不卡视频 | 日韩av成人 | 精品亚洲一区二区三区四区五区 | 中文字幕免费在线 | 99久久精品国产一区二区三区 | 日日夜夜天天综合 | 精品成人在线观看 | 欧美成人免费在线 | 99视频在线 | 欧美区精品 | 国产精品99精品久久免费 | 久久久久亚洲视频 | 日韩一级免费观看 | 玖玖爱365| 九九一级片 | 国产成人综合一区二区三区 | 国产亚洲一区二区三区在线观看 | 中文字幕日韩在线观看 |