【发布时间】:2021-07-10 13:57:54
【问题描述】:
我面临 redis 的并发问题,我的 API 是基于 Nodejs Fastify 构建的,我在 API 调用中使用 fastify-redis。
我使用了两种简单的redis方法ZRANGEBYSCORE和ZINCRBY
问题是在高并发下 ZINCRBY 执行较晚,导致在多个请求上给我相同的值。
在高并发下如何防止这种情况有什么方法可以锁定之前执行的KEY。
这是我的代码示例
numbers = await redis.zrangebyscore(
`user:${req.query.key}:${state}`, //key
0, // min value
50, // max value
"LIMIT",
0, // offset
1 // limit
);
if (numbers.length > 0) {
await redis.zincrby(`user:${req.query.key}:${state}`, 1, numbers[0]);
res.send(numbers[0]);
}
【问题讨论】: