千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > redis和mongoDB相比分別有什么優(yōu)缺點(diǎn)?

redis和mongoDB相比分別有什么優(yōu)缺點(diǎn)?

來(lái)源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-10-13 19:10:22 1697195422

一、redis的優(yōu)點(diǎn)

1、讀寫(xiě)性能優(yōu)異:在 Redis 中,所有的數(shù)據(jù)都存儲(chǔ)在內(nèi)存中,因此讀寫(xiě)速度非常快,只需要幾微秒的時(shí)間就能完成一次讀寫(xiě)操作。

2、支持?jǐn)?shù)據(jù)持久化:支持 AOF 和 RDB 兩種持久化方式。

3、支持主從復(fù)制:主機(jī)會(huì)自動(dòng)將數(shù)據(jù)同步到從機(jī),可以進(jìn)行讀寫(xiě)分離。

4、數(shù)據(jù)結(jié)構(gòu)豐富:支持 string、hash、set、sortedset、list 等數(shù)據(jù)結(jié)構(gòu)。

二、redis的缺點(diǎn)

1、不具備自動(dòng)容錯(cuò)和恢復(fù)功能:Redis 不具備自動(dòng)容錯(cuò)和恢復(fù)功能,主機(jī)從機(jī)的宕機(jī)都會(huì)導(dǎo)致前端部分讀寫(xiě)請(qǐng)求失敗,需要等待機(jī)器重啟或者手動(dòng)切換前端的 IP 才能恢復(fù)。

2、數(shù)據(jù)不能及時(shí)同步:主機(jī)宕機(jī),宕機(jī)前有部分?jǐn)?shù)據(jù)未能及時(shí)同步到從機(jī),切換 IP 后還會(huì)引入數(shù)據(jù)不一致的問(wèn)題,降低了系統(tǒng)的可用性。

3、采用全量復(fù)制:Redis 的主從復(fù)制采用全量復(fù)制,復(fù)制過(guò)程中主機(jī)會(huì) fork 出一個(gè)子進(jìn)程對(duì)內(nèi)存做一份快照, 并將子進(jìn)程的內(nèi)存快照保存為文件發(fā)送給從機(jī),這一過(guò)程需要確保主機(jī)有足夠多的空余內(nèi)存。若快照文件較大,對(duì)集群的服務(wù)能力會(huì)產(chǎn)生較大的影響,而且復(fù)制過(guò)程是在從機(jī)新加入集群或者從機(jī)和主機(jī)網(wǎng)絡(luò)斷開(kāi)重連時(shí)都會(huì)進(jìn)行,也就是網(wǎng)絡(luò)波動(dòng)都會(huì)造成主機(jī)和從機(jī)間的一次全量的數(shù)據(jù)復(fù)制,這對(duì)實(shí)際的系統(tǒng)運(yùn)營(yíng)造成了不小的麻煩。

4、較難支持在線擴(kuò)容:Redis 較難支持在線擴(kuò)容,在集群容量達(dá)到上限時(shí)在線擴(kuò)容會(huì)變得很復(fù)雜。為避免這一問(wèn)題,運(yùn)維人員在系統(tǒng)上線時(shí)必須確保有足夠的空間,這對(duì)資源造成了很大的浪費(fèi)。

三、mongoDB的優(yōu)點(diǎn)

1、弱一致性:弱一致性(最終一致),更能保證用戶的訪問(wèn)速度。

2、文檔結(jié)構(gòu)的存儲(chǔ)方式:文檔結(jié)構(gòu)的存儲(chǔ)方式,能夠更便捷的獲取數(shù)。

3、內(nèi)置GridFS:高效存儲(chǔ)二進(jìn)制大對(duì)象(比如照片和視頻)。

4、內(nèi)置Sharding:提供基于Range的Auto Sharding機(jī)制,一個(gè)collection可按照記錄的范圍,分成若干個(gè)段,切分到不同的Shard上。

5、第三方支持豐富:這是與其他的NoSQL相比,MongoDB也具有的優(yōu)勢(shì)。

6、性能優(yōu)越:在使用場(chǎng)合下,千萬(wàn)級(jí)別的文檔對(duì)象,近10G的數(shù)據(jù),對(duì)有索引的ID的查詢不會(huì)比mysql慢,而對(duì)非索引字段的查詢,則是全面勝出。

四、mongoDB的缺點(diǎn)

1、不支持事務(wù)操作:事務(wù)要求嚴(yán)格的系統(tǒng)(如果銀行系統(tǒng))肯定不能用它。

2、占用空間過(guò)大:mongoDB占用空間過(guò)大。

3、沒(méi)有成熟的維護(hù)工具:MongoDB沒(méi)有如MySQL那樣成熟的維護(hù)工具,這對(duì)于開(kāi)發(fā)和IT運(yùn)營(yíng)都是個(gè)值得注意的地方。

五、redis與mongoDB的區(qū)別

1、內(nèi)存管理

Redis 數(shù)據(jù)全部存在內(nèi)存,定期寫(xiě)入磁盤(pán),當(dāng)內(nèi)存不夠時(shí),可以選擇指定的 LRU 算法刪除數(shù)據(jù)。MongoDB 數(shù)據(jù)會(huì)優(yōu)先存于內(nèi)存,當(dāng)內(nèi)存不夠時(shí),只將熱點(diǎn)數(shù)據(jù)放入內(nèi)存,其他數(shù)據(jù)存在磁盤(pán)。

需要注意的是:Redis 和mongoDB特別消耗內(nèi)存,一般不建議將它們和別的服務(wù)部署在同一臺(tái)服務(wù)器上。

2、數(shù)據(jù)結(jié)構(gòu)

Redis 支持的數(shù)據(jù)結(jié)構(gòu)豐富,包括hash、set、list等。MongoDB 數(shù)據(jù)結(jié)構(gòu)比較單一,但是支持豐富的數(shù)據(jù)表達(dá),索引,最類似關(guān)系型數(shù)據(jù)庫(kù),支持的查詢語(yǔ)言非常豐富。

3、數(shù)據(jù)量和性能

當(dāng)物理內(nèi)存夠用的時(shí)候,

性能:redis>mongodb>mysql數(shù)據(jù)量:mysql>mongodb>redis

注意:mongodb可以存儲(chǔ)文件,適合存放大量的小文件,內(nèi)置了GirdFS 的分布式文件系統(tǒng)。

4、可靠性

mongodb 從1.8版本后,采用binlog方式(MySQL同樣采用該方式)支持持久化,增加可靠性;Redis 依賴快照進(jìn)行持久化;AOF增強(qiáng)可靠性;增強(qiáng)可靠性的同時(shí),影響訪問(wèn)性能。

可靠性上MongoDB優(yōu)于Redis。

延伸閱讀1:NoSQL數(shù)據(jù)庫(kù)簡(jiǎn)介

NoSQL(Not only SQL)是對(duì)不同于傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)管理系統(tǒng)的統(tǒng)稱,即廣義地來(lái)說(shuō)可以把所有不是關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)統(tǒng)稱為NoSQL。NoSQL 數(shù)據(jù)庫(kù)專門構(gòu)建用于特定的數(shù)據(jù)模型,并且具有靈活的架構(gòu)來(lái)構(gòu)建現(xiàn)代應(yīng)用程序。NoSQL 數(shù)據(jù)庫(kù)使用各種數(shù)據(jù)模型來(lái)訪問(wèn)和管理數(shù)據(jù)。這些類型的數(shù)據(jù)庫(kù)專門針對(duì)需要大數(shù)據(jù)量、低延遲和靈活數(shù)據(jù)模型的應(yīng)用程序進(jìn)行了優(yōu)化,這是通過(guò)放寬其他數(shù)據(jù)庫(kù)的某些數(shù)據(jù)一致性限制來(lái)實(shí)現(xiàn)的。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
用count(*)做判斷條件怎么弄的好一點(diǎn)?

一、用count(*)做判斷條件弄的好一點(diǎn)的方法1、使用索引來(lái)優(yōu)化查詢?nèi)绻樵冎猩婕暗降谋淼牧卸家烟砑恿苏_的索引,那么查詢的效率將得到大幅...詳情>>

2023-10-13 20:14:55
teradata與greenplum的區(qū)別?

一、teradata與greenplum的區(qū)別 1、架構(gòu)不同:Teradata是一種對(duì)稱多處理(Symmetric Multiprocessing,SMP)架構(gòu),而Greenplum是一種以共享無(wú)阻塞詳情>>

2023-10-13 20:07:18
arcgis的mdb數(shù)據(jù)庫(kù)怎么轉(zhuǎn)成db數(shù)據(jù)庫(kù)?

一、arcgis的mdb數(shù)據(jù)庫(kù)轉(zhuǎn)成db數(shù)據(jù)庫(kù)的方法1、導(dǎo)出mdb數(shù)據(jù)庫(kù)中的數(shù)據(jù)表使用ArcGIS中的Export功能將MDB數(shù)據(jù)庫(kù)中的數(shù)據(jù)表導(dǎo)出為CSV或Excel格式的文...詳情>>

2023-10-13 20:04:31
怎么分析判斷一個(gè)網(wǎng)站的后臺(tái)數(shù)據(jù)庫(kù)管理系統(tǒng)是什么?

一、分析判斷一個(gè)網(wǎng)站的后臺(tái)數(shù)據(jù)庫(kù)管理系統(tǒng)是什么的方法1、根據(jù)網(wǎng)頁(yè)編程語(yǔ)言去判斷結(jié)合網(wǎng)頁(yè)編程語(yǔ)言和后臺(tái)數(shù)據(jù)庫(kù)系統(tǒng)的常見(jiàn)搭配可以判斷出該網(wǎng)...詳情>>

2023-10-13 20:00:20
MYSQL的幻讀和我們平常說(shuō)的幻讀有什么區(qū)別?

一、MYSQL的幻讀和我們平常說(shuō)的幻讀有什么區(qū)別平常說(shuō)的幻讀:事務(wù)1查詢id詳情>>

2023-10-13 19:58:38
快速通道
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
亚洲成a人片在线观看一级 亚洲欧美国产制服动漫 | 亚洲大片高清在线播放 | 亚洲五月丁香中文字幕 | 中文字幕第62久久 | 久久精品久久toko | 日本精品视频在线观看 |