Redis 连接池实现思想及优点

时间:2024-04-14 08:02:21

实现思想:
连接池一般采用多线程+多Redis连接(连接池)方法
如:服务端开启4个线程,并为同一个IP PORT 数据库的某个DBIndex 密码 开启4个连接;
每个连接与线程ID对应起来,这样每个线程用自己对应的Redis连接,由此一个服务器的某个功能会同时使用多线程中的多个Redis连接,当在一个线程中要访问Redis时,根据线程ID得到对应的Redis连接进行访问,由此便能提升其性能,其优点如下所示。

优点:
打开Redis服务器源码
Redis 连接池实现思想及优点
这里可以看到,每一个客户端连接,都会创建一个事件,绑定函数是readQueryFromClient
结合aeApiPoll函数的代码,会轮循向IOCP获取网络数据,那么可以总结以下过程:
Redis服务器执行命令分两步:
(1)IOCP方式读取绑定的IO数据
(2)readQueryFromClient执行命令

单连接是每次读单个事件绑定的IO数据,调用readQueryFromClient执行相关操作
多连接是每次可以读多个事件绑定的IO数据,调用readQueryFromClient执行相关操作

总结:
其多连接(连接池)的优点即为(1)一次读取多个事件绑定的IO数据(减少IO等待),调用readQueryFromClient执行操作(readQueryFromClient执行命令时间很快),
而单链接一次只能读取单个事件绑定的IO数据,然后执行,然后读取下个IO数据(此时readQueryFromClient处于等待状态),然后执行。此过程将导致readQueryFromClient得不到充分使用!