小编Ale*_*ayr的帖子

如果Redis是单线程的,怎么会这么快?

我目前正在尝试了解Redis的一些基本实现。我知道 redis 是单线程的,我已经偶然发现了以下问题:Redis 是单线程的,那么它如何进行并发 I/O?

但我仍然认为我没有理解它。Afaik Redis 使用一个单线程的反应器模式。因此,如果我理解正确,那么有一个观察者(处理 FD/传入/传出连接)将要完成的工作委托给它注册的事件处理程序。他们做实际的工作并设置例如。他们的响应作为事件给观察者,观察者将响应传输回客户端。但是如果客户端的请求 (R1) 花费大约 1 分钟会发生什么。另一个客户端创建另一个(快速)请求 (R2)。然后 - 由于 redis 是单线程的 - 在 R1 完成之前,不能将 R2 委托给正确的处理程序,对吗?在多线程环境中,您可以在单个线程中启动每个处理程序,因此“主”

如果它真的只是将 io 处理和处理程序逻辑排队,那么它永远不会那么快。我在这里缺少什么?

multithreading reactor single-threaded redis

3
推荐指数
1
解决办法
3019
查看次数

标签 统计

multithreading ×1

reactor ×1

redis ×1

single-threaded ×1