天天看點

Redis采用的單線程+多路IO複用

為什麼redis是單線程的?

首先并不是高性能伺服器都是多線程來實作的,因為reids的核心就是資料在記憶體中,他單線程的去操作就是效率最高的。單線程可以避免上下文的切換和鎖的競争。

一次CPU上下文切換大概在1500ns左右。

從記憶體中讀取1MB的連續資料,耗時大約250us,假設1MB的資料由多個線程讀取了1000次,那麼就有1000次時間上下文切換。那麼就有1500ns *1000 = 1500us, 在對比單線程下的250us,結果不言而喻。

但是在redis6.0以後,采用了多路IO複用來提高性能,

多路IO複用隻用來處理網絡資料的讀寫和協定解析,指令的執行仍舊是單線程。

Redis采用的單線程+多路IO複用