Skip to content
Buy me a coffee

RedisLockStore

Defined in: src/redis.ts:85

LockStore on a single Redis primary (no Redlock): lease = SET NX PX, fencing token = INCR of a per-key counter. The counter never expires (it must only grow), so one small key per lock key is kept forever.

Caveats: Redis replication is async, so after a failover a lease (or counter increments) can be lost: two holders, or a repeated fencing token. For tokens to survive restarts, run with AOF (appendfsync everysec or always). The protected resource should still reject writes whose token is below the highest it has seen.

new RedisLockStore(options): RedisLockStore

Defined in: src/redis.ts:89

RedisStoreOptions

RedisLockStore

acquire(key, owner, ttlMs): Promise<{ fencingToken: number; } | undefined>

Defined in: src/redis.ts:100

string

string

number

Promise<{ fencingToken: number; } | undefined>

LockStore.acquire


release(key, owner): Promise<void>

Defined in: src/redis.ts:109

string

string

Promise<void>

LockStore.release


renew(key, owner, ttlMs): Promise<boolean>

Defined in: src/redis.ts:105

string

string

number

Promise<boolean>

LockStore.renew