redis为什么快
Redis為什么是單線程的
Redis 是基于內(nèi)存的操作,CPU 不是 Redis 的瓶頸,Redis 的瓶頸最有可能是機器的內(nèi)存的大小和網(wǎng)絡(luò)的帶寬,而且單線程的性能已經(jīng)非常高了,就沒有必要使用多線程了,所以 Redis 是單進程單線程的。 提示:
如果我們運行的服務(wù)器是多核服務(wù)器,為了充分利用多核優(yōu)勢我們可以在單臺服務(wù)器起多個 Redis 服務(wù),或者架設(shè) 主從復制、哨兵模式、集群模式等多機方案。
Redis 服務(wù)運行時只是處理客戶端請求是單進程單線程的,但是服務(wù)運行時會有其他進程或線程處理其他的事,比如RDB的文件的生成就會在子進程中進行等。
Redis為什么這么快
什么是多路I/O復用
多路I/O復用模型是利用 select、poll、epoll 可以同時監(jiān)察多個流的 I/O 事件的能力,在空閑的時候,會把當前線程阻塞掉,當有一個或多個流有 I/O 事件時,就從阻塞態(tài)中喚醒,于是程序就會輪詢一遍所有的流(epoll 是只輪詢那些真正發(fā)出了事件的流),并且只依次順序的處理就緒的流,這種做法就避免了大量的無用操作。
這里“多路”指的是多個網(wǎng)絡(luò)連接,“復用”指的是復用同一個線程。采用多路 I/O 復用技術(shù)可以讓單個線程高效的處理多個連接請求(盡量減少網(wǎng)絡(luò) IO 的時間消耗),且 Redis 在內(nèi)存中操作數(shù)據(jù)的速度非常快,也就是說內(nèi)存內(nèi)的操作不會成為影響Redis性能的瓶頸,主要由以上幾點造就了 Redis 具有很高的吞吐量。
注意事項
總結(jié)