單線程
Redis 是單線程,主要是指 Redis 的網絡 IO 和鍵值對讀寫是由一個線程來完成的。持久化、異步刪除、集群數據同步等,其實是由額外的線程執行的。
避免了多線程編程模式面臨的共享資源的並發訪問控制問題。
多路復用機制
一個線程處理多個 IO 流(select/epoll):在 Redis 只運行單線程的情況下,該機制允許內核中,同時存在多個監聽套接字和已連接套接字。內核會一直監聽這些套接字上的連接請求或數據請求。一旦有請求到達,就會交給 Redis 線程處理,這就實現了一個 Redis 線程處理多個 IO 流的效果。
為了在請求到達時能通知到 Redis 線程,select/epoll 提供了基於事件的回調機制,即針對不同事件的發生,調用相應的處理函數。