【发布时间】:2018-06-15 12:40:44
【问题描述】:
场景:当一个请求到来时,我需要连接到 Redis 实例,打开连接,获取计数,更新计数并关闭连接(对于每个请求,这就是流程)。当请求按顺序出现时,即 1 个用户一个接一个地发送 100 个请求,那么 Redis 中的计数为 100。
问题:问题是并发请求何时到来。即 10 个用户同时发送 100 个请求(每个用户 10 个请求),那么计数不是 100,而是大约 50。
示例: 假设 Redis 中的 count 为 0。如果同时有 10 个请求,则将打开 10 个连接,所有 10 个连接将获取 count 值为 0 并将其更新为 1 .
分析:我发现,随着请求同时到来,多个连接正在获取相同的计数值并更新它,因为计数值被覆盖。如果您已经遇到此问题,任何人都可以提出避免此问题的最佳方法。
这里我们使用的是 Hapijs、Redis 3.0、ioredis
【问题讨论】:
标签: node.js redis hapijs ioredis