redis连接池问题
比如就一个服务A,部署在服务器1上。
redis部署在服务器2上。
为什么还会需要redis连接池这个东西?我在服务A上维护一个全局变量的redis连接实例,前端请求过来我都是用这个连接实例去执行redis指令,不也可以吗?
redis连接池,无非就是高并发的时候可以支持多个redis连接实例去连接redis,但是redis本身就是单线程的,我多个连接同时去连redis(不还是得排队么),然后执行指令,和我单个全局连接直接去一个个执行redis指令,感觉应该差不多性能吧?
而且如果是全局单个redis连接的话,每次请求过来我还省了连接这个操作,不是又省了点时间么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
楼主所说的并不正确。
单线程并不是redis性能瓶颈。对redis而言,有两个性能所在(一个是计算性能,也就是所谓的执行命令速度,另一个是网络通信性能)。很显然,redis较执行效率而言,通信才是其瓶颈。据我所知(不一定正确,但也相差无几),redis执行命令大概是10w/s,因此,对于客户端将若干条(若干条显然不会很大)命令传输给redis服务,命令执行时间和通信时间比等于0.(假设以1s举例,几条命令传输时间为40ms,而每秒可执行10w个命令,即n/10w 秒就可执行完毕,等待下一个命令到来的时间间隙(约39ms多)redis没有任何命令执行),这就造成了redis闲置。
综上,要提高redis的性能,可以降低单位时间内的通信成本。那么连接池就是一个不错的选择。
客户端使用连接池+多线程方案,使得使得redis服务闲置时间降低,极大地提高了服务效率。
确实可以如题主说的做
连接池管理连接,而这个管理的过程,我们当然自己可以做。
连接池可以看作是,有人帮你做了这部分工作,而你可以选择自己实现一次,并没有什么坏处。
学习一下怎么负载均衡也是好的。