試圖掌握Redis的一些基礎(chǔ)知識(shí)我遇到了一篇有趣的博客文章。作者說(shuō):Redis是帶有epoll / kqueue的單線程,并且在I / O并發(fā)方面無(wú)限縮放。我肯定誤解了整個(gè)線程,因?yàn)槲野l(fā)現(xiàn)這個(gè)說(shuō)法令人費(fèi)解。如果程序是單線程的,它如何同時(shí)執(zhí)行任何操作?如果服務(wù)器是單線程的話,為什么Redis操作是原子的呢?有人可以就這個(gè)問(wèn)題說(shuō)清楚嗎?
2 回答

鳳凰求蠱
TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
好的,Redis是用戶級(jí)別的單線程OTOH,內(nèi)核線程池和/或分層驅(qū)動(dòng)程序支持所有異步I / O.
對(duì)于某些人來(lái)說(shuō),“ 并發(fā) ”包括將網(wǎng)絡(luò)事件分發(fā)到套接字狀態(tài)機(jī)。它是單線程的,在一個(gè)核心上運(yùn)行(在用戶級(jí)別),因此我不會(huì)將其稱為并發(fā)。其他人不同..
“ 在I / O并發(fā)性方面無(wú)限擴(kuò)展 ”只是對(duì)事實(shí)是經(jīng)濟(jì)的。他們可能會(huì)更加相信,如果他們說(shuō)'可以比每個(gè)客戶一個(gè)線程更好地?cái)U(kuò)展,只要客戶不要求太多',盡管他們可能會(huì)覺(jué)得有必要添加'被其他異步解決方案重載在用戶級(jí)使用所有核心'。
添加回答
舉報(bào)
0/150
提交
取消