KeyDB項目是從redis fork出來的分支。眾所周知redis是一個單線程的kv內存存儲系統,而KeyDB在100%兼容redis API的情況下將redis改造成多線程。
項目git地址:https://github.com/JohnSully/KeyDB
網上公開的技術細節比較少,本文基本是通過閱讀源碼總結出來的,如有錯漏之處歡迎指正。
多線程架構
線程模型
KeyDB將redis原來的主線程拆分成了主線程和worker線程。每個worker線程都是io線程,負責監聽埠,accept請求,讀取數據和解析協議。如圖所示: