@apiratorjs/locking-redis
Version:
An extension to the core @apiratorjs/locking library, providing Redis-based implementations of distributed mutexes and semaphores for true cross-process concurrency control in Node.js.
23 lines • 1.21 kB
TypeScript
import { AcquireParams, IDistributedSemaphore, IReleaser } from "@apiratorjs/locking/dist/src/types";
import { RedisClientType } from "redis";
import { types } from "@apiratorjs/locking";
import { BaseDistributedPrimitive } from "./base-distributed-primitive";
export declare class RedisDistributedSemaphore extends BaseDistributedPrimitive implements IDistributedSemaphore {
readonly maxCount: number;
constructor(props: types.DistributedSemaphoreConstructorProps & {
redisClient: RedisClientType;
});
waitForAnyUnlock(): Promise<void>;
waitForFullyUnlock(): Promise<void>;
destroy(): Promise<void>;
freeCount(): Promise<number>;
acquire(params?: AcquireParams): Promise<IReleaser<types.SemaphoreToken>>;
protected release(token: types.AcquireToken): Promise<void>;
cancelAll(errMessage?: string): Promise<void>;
isLocked(): Promise<boolean>;
runExclusive<T>(fn: () => Promise<T> | T): Promise<T>;
runExclusive<T>(params: types.AcquireParams, fn: () => Promise<T> | T): Promise<T>;
protected tryAcquire(ttlMs: number): Promise<types.AcquireToken | undefined>;
private throwIfDestroyed;
}
//# sourceMappingURL=redis-distributed-semaphore.d.ts.map