試圖掌握Redis的一些基礎知識我遇到了一篇有趣的博客文章。作者說:Redis是帶有epoll / kqueue的單線程,并且在I / O并發方面無限縮放。我肯定誤解了整個線程,因為我發現這個說法令人費解。如果程序是單線程的,它如何同時執行任何操作?如果服務器是單線程的話,為什么Redis操作是原子的呢?有人可以就這個問題說清楚嗎?
2 回答

鳳凰求蠱
TA貢獻1825條經驗 獲得超4個贊
好的,Redis是用戶級別的單線程OTOH,內核線程池和/或分層驅動程序支持所有異步I / O.
對于某些人來說,“ 并發 ”包括將網絡事件分發到套接字狀態機。它是單線程的,在一個核心上運行(在用戶級別),因此我不會將其稱為并發。其他人不同..
“ 在I / O并發性方面無限擴展 ”只是對事實是經濟的。他們可能會更加相信,如果他們說'可以比每個客戶一個線程更好地擴展,只要客戶不要求太多',盡管他們可能會覺得有必要添加'被其他異步解決方案重載在用戶級使用所有核心'。
添加回答
舉報
0/150
提交
取消