一个 Redis 连接可以服务一千个并发用户吗?

agg*_*vit 4 redis node.js node-redis

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

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

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

谢谢!

Gaw*_*ain 5

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

在Redis服务器端,所有命令都是可序列化执行的。所以单连接对于Redis服务器来说不会是问题。

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

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

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