Redis是单线程的,那么它是如何进行并发I / O的呢?

试图掌握Redis的一些基础知识我遇到了一篇有趣的博客文章。


作者说:


Redis是带有epoll / kqueue的单线程,并且在I / O并发方面无限缩放。


我肯定误解了整个线程,因为我发现这个说法令人费解。如果程序是单线程的,它如何同时执行任何操作?如果服务器是单线程的话,为什么Redis操作是原子的呢?


有人可以就这个问题说清楚吗?


SMILET
浏览 856回答 2
2回答

凤凰求蛊

好的,Redis是用户级别的单线程OTOH,内核线程池和/或分层驱动程序支持所有异步I / O.对于某些人来说,“ 并发 ”包括将网络事件分发到套接字状态机。它是单线程的,在一个核心上运行(在用户级别),因此我不会将其称为并发。其他人不同..“ 在I / O并发性方面无限扩展 ”只是对事实是经济的。他们可能会更加相信,如果他们说'可以比每个客户一个线程更好地扩展,只要客户不要求太多',尽管他们可能会觉得有必要添加'被其他异步解决方案重载在用户级使用所有核心'。
打开App,查看更多内容
随时随地看视频慕课网APP