Redis為什麼使用單程序單執行緒還這麼快

2021-10-04 13:13:13 字數 948 閱讀 8963

redis為什麼這麼快

單程序單執行緒

redis採用的是基於記憶體的單程序單執行緒模型的kv 資料庫由c語言編寫。 對讀寫等事件的響應是通過對epoll函式的包裝來做到的。redis的實際處理速度完全依靠主程序的執行效率。因為redis是基於記憶體的操作,cpu不是redis的瓶頸,redis的瓶頸最有可能是機器記憶體的大小或者網路頻寬。

操作的瓶頸在於網路的i/o,i/o操作的步驟分為:

單程序單執行緒的優勢:

redis為什麼這麼快

多路 i/o 復用模型

對於i/o阻塞可能有很多人不知道,i/o操作的阻塞到底是怎麼引起的,redis又是怎麼解決的呢?

多路i/o復用模型是利用 select、poll、epoll 可以同時監察多個流的 i/o 事件的能力,在空閒的時候,會把當前執行緒阻塞掉,當有乙個或多個流有 i/o 事件時,就從阻塞態中喚醒,於是程式就會輪詢一遍所有的流(epoll 是只輪詢那些真正發出了事件的流),並且只依次順序的處理就緒的流,這種做法就避免了大量的無用操作。

**這裡「多路」指的是多個網路連線,「復用」指的是復用同乙個執行緒。**採用多路 i/o 復用技術可以讓單個執行緒高效的處理多個連線請求(儘量減少網路 io 的時間消耗),且 redis 在記憶體中運算元據的速度非常快,也就是說記憶體內的操作不會成為影響redis效能的瓶頸,主要由以上幾點造就了 redis 具有很高的吞吐量。

總結reids之所以單執行緒還如此之快的原因就是因為內部採用了i/o多路復用機制模型,但是這種機制不是什麼情況下都是使用的,應用於大量的鏈結,處理時間又不是很長的業務,連線數最好是大於1000,併發程度不高或者區域網環境下nio並沒有顯著的效能優勢。

Redis為什麼使用單程序單執行緒方式

redis採用的是基於記憶體的採用的是單程序單執行緒模型的kv資料庫,由c語言編寫。官方提供的資料是可以達到100000 的qps。這個資料不比採用單程序多執行緒的同樣基於記憶體的kv資料庫memcached差。redis快的主要原因是 完全基於記憶體 資料結構簡單,對資料操作也簡單 使用多路 i ...

Redis為什麼使用單程序單執行緒方式

redis為什麼使用單程序單執行緒方式?redis採用的是基於記憶體的採用的是單程序單執行緒模型的kv資料庫,由c語言編寫。官方提供的資料是可以達到100000 的qps。redis快的主要原因是 1.完全基於記憶體 2.資料結構簡單,對資料操作也簡單 3.使用多路 i o 復用模型 單程序單執行緒...

Redis為什麼使用單程序單執行緒方式也這麼快

redis採用的是基於記憶體的採用的是單程序單執行緒模型的kv資料庫,由c語言編寫。官方提供的資料是可以達到100000 的qps。這個資料不比採用單程序多執行緒的同樣基於記憶體的kv資料庫memcached差。redis快的主要原因是 完全基於記憶體 資料結構簡單,對資料操作也簡單 使用多路 i ...