murlock
Version:
A distributed locking solution for NestJS, providing a decorator for critical sections with Redis-based synchronization.
25 lines (24 loc) • 1.06 kB
TypeScript
import { OnApplicationShutdown, OnModuleInit } from '@nestjs/common';
import { AsyncStorageService } from './als/als.service';
import { MurLockModuleOptions } from './interfaces';
export declare class MurLockService implements OnModuleInit, OnApplicationShutdown {
readonly options: MurLockModuleOptions;
private readonly asyncStorageService;
private readonly logger;
private redisClient;
private lockScript;
private unlockScript;
constructor(options: MurLockModuleOptions, asyncStorageService: AsyncStorageService);
onModuleInit(): Promise<void>;
onApplicationShutdown(signal?: string): Promise<void>;
private sleep;
private log;
private lock;
private unlock;
private acquireLock;
private releaseLock;
runWithLock<R>(lockKey: string, releaseTime: number, fn: () => Promise<R>): Promise<R>;
runWithLock<R>(lockKey: string, releaseTime: number, wait: number | ((retries: number) => number), fn: () => Promise<R>): Promise<R>;
private registerRedisErrorHandlers;
private blockingLock;
}