Skip to main content
zerotal

Documentation


Documentation / zerotal / lock / RedisLockDriver

Class: RedisLockDriver

Defined in: packages/core/src/lock/drivers/RedisLockDriver.ts:25

Redis-backed distributed lock driver.

Uses SET key owner NX EX ttl for atomic acquisition and a Lua script for owner-guarded release. Safe across multiple server instances.

Requires Bun's built-in Redis client (available when the REDIS_URL environment variable is set or via the global redis export from bun).

Implements

Constructors

Constructor

new RedisLockDriver(_prefix?): RedisLockDriver

Defined in: packages/core/src/lock/drivers/RedisLockDriver.ts:26

Parameters

_prefix?

string = "zerotal_lock:"

Returns

RedisLockDriver

Methods

acquire()

acquire(key, owner, ttlSeconds): Promise<boolean>

Defined in: packages/core/src/lock/drivers/RedisLockDriver.ts:32

Try to acquire the lock. Returns true when acquired, false if already held by another owner and not yet expired.

Parameters

key

string

owner

string

ttlSeconds

number

Returns

Promise<boolean>

Implementation of

LockDriver.acquire


release()

release(key, owner): Promise<boolean>

Defined in: packages/core/src/lock/drivers/RedisLockDriver.ts:46

Release the lock only if the caller is still the owner. Returns true when released, false if the lock was held by someone else (e.g. TTL expired and another process re-acquired).

Parameters

key

string

owner

string

Returns

Promise<boolean>

Implementation of

LockDriver.release


forceRelease()

forceRelease(key): Promise<void>

Defined in: packages/core/src/lock/drivers/RedisLockDriver.ts:51

Unconditionally delete the lock regardless of owner.

Parameters

key

string

Returns

Promise<void>

Implementation of

LockDriver.forceRelease


exists()

exists(key): Promise<boolean>

Defined in: packages/core/src/lock/drivers/RedisLockDriver.ts:55

Returns true if the lock is currently held (not expired).

Parameters

key

string

Returns

Promise<boolean>

Implementation of

LockDriver.exists