Redis是單線程模型,它內部採用了文件事件處理器filter event handler,而這個處理器是單線程的。
文件事件處理器包含:
- 多個socket、
- IO多路複用程序、
- 事件分派器、
- 事件處理器(鏈接應答處理器、事件請求處理器、事件回覆處理器)。
流程:
IO多路複用程序會監聽多個socket,當socket產生事件後,會將socket放入一個隊列中,事件分派器每次取出一個事件再分給不一樣的處理器進行處理。
多線程
Q:爲何Redis是單線程的還能夠支持高併發?
1.它是純內存操做
2.它的核心是非阻塞的IO多路複用機制,這個機制只負責監聽socket,而後將產生事件的socket壓入隊列中。不會對這個事件進行處理,是非阻塞的。
3.避免了多線程帶來的頻繁的上下文切換問題併發