redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?
生活随笔
收集整理的這篇文章主要介紹了
redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
redis 的線程模型
redis 內部使用文件事件處理器 file event handler,這個文件事件處理器是單線程的,所以 redis 才叫做單線程的模型。它采用 IO 多路復用機制同時監聽多個 socket,將產生事件的 socket 壓入內存隊列中,事件分派器根據 socket 上的事件類型來選擇對應的事件處理器進行處理。
文件事件處理器的結構包含 4 個部分:
- 多個 socket
- IO 多路復用程序
- 文件事件分派器
- 事件處理器(連接應答處理器、命令請求處理器、命令回復處理器)
多個 socket 可能會并發產生不同的操作,每個操作對應不同的文件事件,但是 IO 多路復用程序會監聽多個 socket,會將產生事件的 socket 放入隊列中排隊,事件分派器每次從隊列中取出一個 socket,根據 socket 的事件類型交給對應的事件處理器進行處理。
要明白,通信是通過 socket 來完成的,不懂的同學可以先去看一看 socket 網絡編程。
為啥 redis 單線程模型也能效率這么高?
- 純內存操作
- 核心是基于非阻塞的 IO 多路復用機制
- 單線程反而避免了多線程的頻繁上下文切換問題
?
總結
以上是生活随笔為你收集整理的redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在项目中缓存是如何使用的?为什么要用缓存
- 下一篇: redis 都有哪些数据类型?分别在哪些