Skip to content

Commit 3d770ea

Browse files
author
Anthony
committed
redis线程模型
1 parent 7b9ac13 commit 3d770ea

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

docs/database/Redis/Redis.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,21 @@
5454

5555
使用 redis 或 memcached 之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。缺点是需要保持 redis 或 memcached服务的高可用,整个程序架构上较为复杂。
5656

57+
### redis 的线程模型
58+
59+
> 参考地址:https://www.javazhiyin.com/22943.html
60+
61+
redis 内部使用文件事件处理器 `file event handler`,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。
62+
63+
文件事件处理器的结构包含 4 个部分:
64+
65+
- 多个 socket
66+
- IO 多路复用程序
67+
- 文件事件分派器
68+
- 事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)
69+
70+
多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 socket,会将 socket 产生的事件放入队列中排队,事件分派器每次从队列中取出一个事件,把该事件交给对应的事件处理器进行处理。
71+
5772

5873
### redis 和 memcached 的区别
5974

0 commit comments

Comments
 (0)