一个Redis连接能为一千个并发用户提供服务吗



Context:我正在构建一个应用程序,该应用程序将由1000个用户同时访问,并使用Redis作为数据库。我使用的是node-reis客户端。我读到,建议从应用程序的每个实例只打开一个或几个连接,因为打开连接的成本很高。

问题:假设客户端向Redis发送命令。该命令正在传输到Redis,或者在应用程序需要发送另一个命令时正在执行(基本上没有完成(。客户端是等待第一个命令完成,还是立即向Redis发出第二个命令?

这一点很重要,因为如果客户端等待,应用程序就无法真正充分利用异步,当来自一千个用户的命令试图访问Redis时,网络调用将成为一个巨大的瓶颈。命令最好已经在Redis中排队,而不是让它们在通过网络之前等待更早的命令完成。

谢谢!

它基于Redis客户端的实现方式。

在Redis服务器端,所有命令都是可串行执行的。因此,对于Redis服务器来说,单一连接不会成为问题。

在客户端,如果您的框架使用阻塞TCP连接(如Jedis(,则很少有连接会成为瓶颈,因为您的命令将在客户端被阻塞以等待空闲连接。

但是,如果客户端使用async/nio(如Lettuse(,那么单个连接就可以了,因为连接可以在线程之间重用。

此外,数千个并发用户对Redis来说不是问题,但如果你使用的是单个web服务器,你也应该专注于你的web服务。

您可以运行节点应用程序的多个实例,然后使用Nginx平衡负载(假设您正在使用它(。客户端将不必等待,负载将得到平衡。

使用Redis Pub/Sub创建连接。

这是供参考的文档。

更新:在此处找到详细的分步说明

最新更新