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