@abeai/node-redlock

Wrapper for node-redlock.

Usage no npm install needed!

<script type="module">
  import abeaiNodeRedlock from 'https://cdn.skypack.dev/@abeai/node-redlock';
</script>

README

Wrapper for node-redlock.

Overview

This package provides a pragmatic interface on top of node-redlock.

Installation

npm install @abeai/node-redlock --save

Instantiation

const Redlock = require('@abeai/node-redlock');
const redis = require('@abeai/node-redlock');

redis.init(host, options);

const redlock = new Redlock(redis.client());

redlock.lock('lockkey', 1000, () => {
    ...
});

Interface

Redlock(redisClients[, options])

Creates a new redlock instance.

redisClients can be a single Redis client or an array of Redis clients.

Options

defaultTtl

Default TTL in ms which should be used if ttl is obmitted in redlock.lock call.

driftFactor

The expected clock drift in ms. Default: 0.01

For more details see http://redis.io/topics/distlock.

retryCount

The max number of times Redlock will attempt to lock a resource before erroring. Default: 300

retryDelay

The time in ms between attempts. Default: 50

retryJitter

The max time in ms randomly added to retries to improve performance under high contention. Default: 50

For more details see https://www.awsarchitectureblog.com/2015/03/backoff.html.

redlock.lock(resource[, ttl], fn)

Locks a given resource using the Redlock algorithm. Accepts a resource string, TTL of milliseconds that the lock should be held, and a function that should be executed while the resource is locked.

If ttl is obmitted, options.defaultTtl is used instead.