@wenye123/redis-lock
Version:
49 lines (48 loc) • 1.48 kB
TypeScript
import { Redis } from "ioredis";
export interface IOptions {
/** ioredis实例 */
client: Redis;
/** 键前缀 */
keyPrefix: string;
}
export default class {
private keyPrefix;
private redis;
constructor(options: IOptions);
private getKeyName;
private getIdentifier;
private sleep;
private initLua;
/**
* 请求一个锁标志
* @param lockName 锁名字
* @param acquireTimeout 请求超时毫秒数,默认3000
* @param lockTimeout 锁过期毫秒数,默认5000
*/
acquireLock(lockName: string, acquireTimeout?: number, lockTimeout?: number): Promise<string | null>;
/**
* 释放锁
* @param lockName 锁名字
* @param identifier 锁标志
*/
releaseLock(lockName: string, identifier: string): Promise<boolean>;
/**
* 获取信号量
* @param sename 信号量名字
* @param limit 限制数
* @param timeout 信号量过期毫秒数,默认3000
*/
acquireSemaphore(sename: string, limit: number, timeout?: number): Promise<string | null>;
/**
* 释放信号量
* @param sename 信号量名字
* @param identifier 信号量标识
*/
releaseSemaphore(sename: string, identifier: string): Promise<boolean>;
/**
* 刷新信号量
* @param sename 信号量名字
* @param identifier 信号量标识符
*/
refreshSemaphore(sename: string, identifier: string): Promise<boolean>;
}