1
mazyi 2020-06-04 08:48:52 +08:00 via iPhone
1 是,2 为什么要 channel 。
|
2
lsk569937453 OP @mazyi 得记录指令属于哪个连接的,等指令执行完,然后将 response 写回到这个连接。
|
3
mazyi 2020-06-04 09:26:13 +08:00
@lsk569937453 不一定需要 channel 实现,只需要 socket 的句柄就行了
|
4
julyclyde 2020-06-04 10:08:31 +08:00
1 是。我见过一个指令十几秒的情况
|
5
nicebird 2020-06-04 10:15:03 +08:00
1. 是这样的,不过只有在执行类似清理整个 redis 库的指令才会遇到。因为 redis 都是内存里,指令执行很快。
2. socket 收包、解包后,解析出指令立刻执行,redis 基本没有异步执行的指令,同步执行完了,直接回复就行了。 |
6
TypeErrorNone 2020-06-04 10:19:03 +08:00
redis 出多线程的了,这个多线程指的是接收连接,操作还是单线程
|
7
boyhailong 2020-06-04 10:20:23 +08:00
lz 是不是忘记 redis 处理客户端 cmd 实现用的 tcp
|
8
wangsilence 2020-06-04 11:39:23 +08:00
redis 大多数命令时间复杂度都是 O(1) 、O(log N)、O(N), 而且都是基于内存操作,可以说非常快,这种时间时间复杂度比较低的在引入多线程会增加复杂性,提升不高。dump 都是 fork 子进程来处理的,Redis 6.0 引入了多线程 I/O,比较耗时的命令也增加了多线程处理
|