0

我正在使用 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);
4

0 回答 0