我正在使用 Redlock node.js 但遇到 1 个问题。我只有 1 个 Redis 实例,默认连接超时时间为 60 分钟。因此,如果我在 Redis 关闭时尝试获取锁,Redlock 会一直等待 60 分钟。我已经检查了文档,但获取锁定的时间有限。
这是创建锁的代码块:
const client = redis.createClient({ url: redisHost });
const createRedlock = () => {
const redlock = new Redlock(
[client],
{
driftFactor: 0.01,
retryCount: 20,
retryDelay: 200,
retryJitter: 200,
automaticExtensionThreshold: 500,
}
);
redlock.on('clientError', (err) => {
logger.error('A redis error has occurred:', err);
});
redlock.on('error', (error) => {
logger.error(error);
});
return redlock;
};
以及获取锁的代码:
// if Redis is down, this would hold until Redis is up again
const redlock = createRedlock();
const lock = await redlock.acquire([id], 1000 * 10);