redis是單線程的處理命令的,還會達(dá)到每秒萬級別的處理能力呢?
原因有3點
1.純內(nèi)存訪問
redis將所有數(shù)據(jù)放在內(nèi)存中,而內(nèi)存的響應(yīng)時間很快,大約為100納秒
2.非阻塞I/O
Redis使用epoll作為I/O多路復(fù)用技術(shù)的實現(xiàn),不在網(wǎng)絡(luò)I/O上浪費過多的時間
3.單線程避免了線程切換和競態(tài)產(chǎn)生的消耗
單線程能帶來2個好處
單線程可以簡化數(shù)據(jù)結(jié)構(gòu)和算法的實現(xiàn)
避免線程切換和競態(tài)產(chǎn)生的消耗,鎖和線程切換通常是性能殺手。
單線程的問題
但是單線程會有一個問題:對于每個命令的執(zhí)行時間是有要求的。如果某個命令執(zhí)行過長,會造成其他命令的阻塞,對于Redis這種高性能的服務(wù)來說是致命的,所以Redis是面向快速執(zhí)行場景的數(shù)據(jù)庫。