常聽到或是看到人說 Redis 是 single threaded,但始終沒有看到有人貼出程式碼證明這件事情。
事實上這是錯的,我們到 Github 直接搜尋 pthread_create
,就可以發現其實在 redis/src/bio.c
裡面是有開 thread 來做 Background I/O 的,而且 redis 使用的 malloc lib 也就是 jemalloc,裡面也是會開 multithread 的。
請見原始碼
會說 redis 是 single threaded,純粹只是因為 main worker thread 只有一條,這和說 Node.js 是 single threaded 是相同的誤會。
之後來補一下為何要用 single main thread 實作,和他的優缺點。