redis為什么性能好

redis為什么性能好

redis是非關(guān)系型內(nèi)存數(shù)據(jù)庫(kù) 數(shù)據(jù)存儲(chǔ)于內(nèi)存中,內(nèi)存讀取速度非常快,如果只是簡(jiǎn)單的 key-value,內(nèi)存不是瓶頸。一般情況下,hash 查找可以達(dá)到每秒數(shù)百萬(wàn)次的數(shù)量級(jí)。? ? ? ? ? ? ? ? ? ? ? (推薦學(xué)習(xí):Redis視頻教程

采用單線程,避免了不必要的上下文切換和競(jìng)爭(zhēng)條件

內(nèi)部實(shí)現(xiàn)采用epoll,采用了epoll+自己實(shí)現(xiàn)的簡(jiǎn)單的事件框架。epoll中的讀、寫、關(guān)閉、連接都轉(zhuǎn)化成了事件,然后利用epoll的多路復(fù)用特性,絕不在io上浪費(fèi)一點(diǎn)時(shí)間

因?yàn)?a href="http://m.babyishan.com/tag/redis">redis的操作都非常快速——它的數(shù)據(jù)全部在內(nèi)存里,完全不需要訪問磁盤。至于并發(fā),Redis 使用多路 I/O 復(fù)用技術(shù),本身的并發(fā)效率不成問題。

當(dāng)然,單個(gè) Redis 進(jìn)程沒辦法使用多核(任一時(shí)刻只能跑在一個(gè) CPU 核心上),但是它本來(lái)就不是非常計(jì)算密集型的服務(wù)。如果單核性能不夠用,可以多開幾個(gè)進(jìn)程。

Redis采用了單線程的模型,保證了每個(gè)操作的原子性,也減少了線程的上下文切換和競(jìng)爭(zhēng)。

另外,數(shù)據(jù)結(jié)構(gòu)也幫了不少忙,Redis全程使用hash結(jié)構(gòu),讀取速度快,還有一些特殊的數(shù)據(jù)結(jié)構(gòu),對(duì)數(shù)據(jù)存儲(chǔ)進(jìn)行了優(yōu)化,如壓縮表,對(duì)短數(shù)據(jù)進(jìn)行壓縮存儲(chǔ),再如,跳表,使用有序的數(shù)據(jù)結(jié)構(gòu)加快讀取的速度。

還有一點(diǎn),Redis采用自己實(shí)現(xiàn)的事件分離器,效率比較高,內(nèi)部采用非阻塞的執(zhí)行方式,吞吐能力比較大。

String 類型,二進(jìn)制安全的

hash 類型,是一個(gè)鍵值對(duì)的集合

List列表 底層是個(gè)鏈表

set 集合 無(wú)需的 通過hashtale實(shí)現(xiàn)

zset sort set 有序集合

更多Redis相關(guān)技術(shù)文章,請(qǐng)?jiān)L問Redis視頻教程欄目進(jìn)行學(xué)習(xí)!

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊9 分享