docs: update redis-single-thread-model.md

* close #82 
* 更新 Redis 单线程模型描述,读者可以参考《Redis 设计与实现》进行系统学习。
* See https://github.com/doocs/technical-books#database
This commit is contained in:
Yang Libin 2019-07-17 09:19:32 +08:00 committed by GitHub
parent 0e25ae885a
commit 275e2dd150
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -45,10 +45,10 @@ redis 内部使用文件事件处理器 `file event handler`,这个文件事
如果此时客户端准备好接收返回结果了,那么 redis 中的 socket01 会产生一个 `AE_WRITABLE` 事件,同样压入队列中,事件分派器找到相关联的命令回复处理器,由命令回复处理器对 socket01 输入本次操作的一个结果,比如 `ok`,之后解除 socket01 的 `AE_WRITABLE` 事件与命令回复处理器的关联。
这样便完成了一次通信。
这样便完成了一次通信。关于 Redis 的一次通信过程,推荐读者阅读《[Redis 设计与实现——黄健宏](https://github.com/doocs/technical-books#database)》进行系统学习。
### 为啥 redis 单线程模型也能效率这么高?
- 纯内存操作。
- 核心是基于非阻塞的 IO 多路复用机制。
- C 语言实现一般来说C 语言实现的程序“距离”操作系统更近,执行速度相对会更快。
- 单线程反而避免了多线程的频繁上下文切换问题,预防了多线程可能产生的竞争问题。
- 单线程反而避免了多线程的频繁上下文切换问题,预防了多线程可能产生的竞争问题。