為什么說(shuō)redis不是單線(xiàn)程 redis單線(xiàn)程為什么比多線(xiàn)程快?
redis單線(xiàn)程為什么比多線(xiàn)程快?一般來(lái)說(shuō),單線(xiàn)程的處理能力要比多線(xiàn)程差,但redis速度快的原因主要有以下幾點(diǎn):1。純內(nèi)存訪(fǎng)問(wèn),ReDIS將所有數(shù)據(jù)存儲(chǔ)在內(nèi)存中,內(nèi)存的響應(yīng)時(shí)間約為100納秒,這是R
redis單線(xiàn)程為什么比多線(xiàn)程快?
一般來(lái)說(shuō),單線(xiàn)程的處理能力要比多線(xiàn)程差,但redis速度快的原因主要有以下幾點(diǎn):
1。純內(nèi)存訪(fǎng)問(wèn),ReDIS將所有數(shù)據(jù)存儲(chǔ)在內(nèi)存中,內(nèi)存的響應(yīng)時(shí)間約為100納秒,這是ReDIS實(shí)現(xiàn)每秒10000級(jí)訪(fǎng)問(wèn)的重要基礎(chǔ)。
2. 非阻塞io。Redis使用epoll作為I/O復(fù)用技術(shù)的實(shí)現(xiàn)。此外,redis自己的事件處理模型將epoll中的連接、讀寫(xiě)和關(guān)閉轉(zhuǎn)換為事件,不會(huì)在網(wǎng)絡(luò)I/O上浪費(fèi)太多時(shí)間。單線(xiàn)程避免了線(xiàn)程切換和爭(zhēng)用的消耗。
單線(xiàn)程的優(yōu)點(diǎn):1。簡(jiǎn)化了數(shù)據(jù)結(jié)構(gòu)和算法的實(shí)現(xiàn)。
2. 避免線(xiàn)程切換和爭(zhēng)用的消耗。對(duì)于服務(wù)器,鎖和線(xiàn)程切換通常是性能殺手。
單線(xiàn)程問(wèn)題:每個(gè)命令的執(zhí)行時(shí)間都有要求。如果執(zhí)行一個(gè)命令,它將阻止其他命令,這對(duì)高性能服務(wù)redis是致命的。因此,redis是一個(gè)用于快速執(zhí)行場(chǎng)景的數(shù)據(jù)庫(kù)。
redis為什么是單線(xiàn)程?
1.
redis基于內(nèi)存,內(nèi)存的讀寫(xiě)速度非常快
2.
redis是單線(xiàn)程的,這為上下文切換線(xiàn)程節(jié)省了大量時(shí)間
3.
redis使用多路復(fù)用技術(shù)處理并發(fā)連接。Epoll用于非阻塞IO的內(nèi)部實(shí)現(xiàn),并使用Epoll自己的簡(jiǎn)單事件框架