Redis是什么?簡述它的優(yōu)缺點(diǎn)?
Redis本質(zhì)上是一個(gè)Key-Value類型的內(nèi)存數(shù)據(jù)庫,很像Memcached,整個(gè)數(shù)據(jù)庫加載在內(nèi)存當(dāng)中操作,定期通過異步操作把數(shù)據(jù)庫中的數(shù)據(jù)flush到硬盤上進(jìn)行保存。
因?yàn)槭羌儍?nèi)存操作,Redis的性能非常出色,每秒可以處理超過 10萬次讀寫操作,是已知性能最快的Key-Value 數(shù)據(jù)庫。
優(yōu)點(diǎn):
讀寫性能極高, Redis能讀的速度是110000次/s,寫的速度是81000次/s。
支持?jǐn)?shù)據(jù)持久化,支持AOF和RDB兩種持久化方式。
支持事務(wù), Redis的所有操作都是原子性的,意思就是要么成功執(zhí)行要么失敗完全不執(zhí)行。單個(gè)操作是原子性的。多個(gè)操作也支持事務(wù),即原子性,通過MULTI和EXEC指令包起來。
數(shù)據(jù)結(jié)構(gòu)豐富,除了支持string類型的value外,還支持hash、set、zset、list等數(shù)據(jù)結(jié)構(gòu)。
支持主從復(fù)制,主機(jī)會(huì)自動(dòng)將數(shù)據(jù)同步到從機(jī),可以進(jìn)行讀寫分離。
豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等特性。
缺點(diǎn):
數(shù)據(jù)庫容量受到物理內(nèi)存的限制,不能用作海量數(shù)據(jù)的高性能讀寫,因此Redis適合的場景主要局限在較小數(shù)據(jù)量的高性能操作和運(yùn)算上。
2. Redis為什么這么快?
內(nèi)存存儲(chǔ):Redis是使用內(nèi)存(in-memeroy)存儲(chǔ),沒有磁盤IO上的開銷。數(shù)據(jù)存在內(nèi)存中,類似于 HashMap,HashMap 的優(yōu)勢就是查找和操作的時(shí)間復(fù)雜度都是O(1)。
單線程實(shí)現(xiàn)( Redis 6.0以前):Redis使用單個(gè)線程處理請求,避免了多個(gè)線程之間線程切換和鎖資源爭用的開銷。注意:單線程是指的是在核心網(wǎng)絡(luò)模型中,網(wǎng)絡(luò)請求模塊使用一個(gè)線程來處理,即一個(gè)線程處理所有網(wǎng)絡(luò)請求。
非阻塞IO:Redis使用多路復(fù)用IO技術(shù),將epoll作為I/O多路復(fù)用技術(shù)的實(shí)現(xiàn),再加上Redis自身的事件處理模型將epoll中的連接、讀寫、關(guān)閉都轉(zhuǎn)換為事件,不在網(wǎng)絡(luò)I/O上浪費(fèi)過多的時(shí)間。
優(yōu)化的數(shù)據(jù)結(jié)構(gòu):Redis有諸多可以直接應(yīng)用的優(yōu)化數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn),應(yīng)用層可以直接使用原生的數(shù)據(jù)結(jié)構(gòu)提升性能。
使用底層模型不同:Redis直接自己構(gòu)建了 VM (虛擬內(nèi)存)機(jī)制 ,因?yàn)橐话愕南到y(tǒng)調(diào)用系統(tǒng)函數(shù)的話,會(huì)浪費(fèi)一定的時(shí)間去移動(dòng)和請求。
Redis的VM(虛擬內(nèi)存)機(jī)制就是暫時(shí)把不經(jīng)常訪問的數(shù)據(jù)(冷數(shù)據(jù))從內(nèi)存交換到磁盤中,從而騰出寶貴的內(nèi)存空間用于其它需要訪問的數(shù)據(jù)(熱數(shù)據(jù))。通過VM功能可以實(shí)現(xiàn)冷熱數(shù)據(jù)分離,使熱數(shù)據(jù)仍在內(nèi)存中、冷數(shù)據(jù)保存到磁盤。這樣就可以避免因?yàn)閮?nèi)存不足而造成訪問速度下降的問題。
Redis提高數(shù)據(jù)庫容量的辦法有兩種:一種是可以將數(shù)據(jù)分割到多個(gè)RedisServer上;另一種是使用虛擬內(nèi)存把那些不經(jīng)常訪問的數(shù)據(jù)交換到磁盤上。需要特別注意的是Redis并沒有使用OS提供的Swap,而是自己實(shí)現(xiàn)。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7030瀏覽量
89038 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3025瀏覽量
74056 -
Redis
+關(guān)注
關(guān)注
0文章
375瀏覽量
10878
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論