agg*_*vit 4 redis node.js node-redis
上下文:我正在构建一个由 1000 个用户同时访问的应用程序,并使用 Redis 作为数据库。我正在使用node-redis客户端。我读到建议从应用程序的每个实例仅打开一个或几个连接,因为打开连接的成本很高。
问题:假设客户端向Redis发送一条命令。当应用程序需要发送另一个命令时,该命令正在传输到 Redis 或正在执行(本质上,未完成)。客户端是等待第一个命令完成,还是立即向 Redis 发送第二个命令?
这很重要,因为如果客户端等待,应用程序就无法真正充分利用异步,并且当来自一千个用户的命令尝试访问 Redis 时,网络调用将成为一个大瓶颈。最好这些命令已经在 Redis 中排队,而不是让它们在通过网络之前等待较早的命令完成。
谢谢!
它基于 Redis 客户端的实现方式。
在Redis服务器端,所有命令都是可序列化执行的。所以单连接对于Redis服务器来说不会是问题。
在客户端,如果您的框架使用阻塞 TCP 连接(如 Jedis),很少有连接将成为瓶颈,因为您的命令将在客户端被阻塞以等待空闲连接。
但如果客户端使用 async / nio(如 Lettuce),单个连接就可以了,因为连接可以在线程之间重用。
此外,数千个并发用户对于 Redis 来说不是问题,但如果您使用单个 Web 服务器,您还应该关注您的 Web 服务。
| 归档时间: |
|
| 查看次数: |
2862 次 |
| 最近记录: |