Compare commits

...

4 Commits

Author SHA1 Message Date
cfd430e31c remove mutex options 2025-01-10 01:20:21 +01:00
20496cc24b make MutexOptions optional 2025-01-10 01:20:11 +01:00
33a49cba4a make MutexOptions optional 2025-01-10 01:19:55 +01:00
f65ab42231 make redis host and port optional 2025-01-10 01:19:06 +01:00
3 changed files with 10 additions and 15 deletions

View File

@ -9,17 +9,17 @@ type RedisClient = redis.RedisClientType<
export class MutexLock {
redisClient: RedisClient;
mutexOptions: MutexOptions;
mutexOptions: MutexOptions | undefined;
constructor(redisClient: RedisClient, options: MutexOptions) {
constructor(redisClient: RedisClient, options?: MutexOptions) {
this.mutexOptions = options;
this.redisClient = redisClient;
}
static async create(options: MutexOptions) {
static async create(options?: MutexOptions) {
const redisClient = await redis
.createClient({
url: `redis://${options.redis.host}:${options.redis.port}`,
url: `redis://${options?.redis?.host ?? "127.0.0.1"}:${options?.redis?.port ?? 6379}`,
})
.connect();
@ -40,12 +40,12 @@ export class MutexLock {
if (acquired) {
await this.redisClient.expire(
lockIdentifier,
this.mutexOptions.mutex?.ttl || 60
this.mutexOptions?.mutex?.ttl || 60
);
return releaseFunc;
}
await new Promise(resolve =>
setTimeout(resolve, this.mutexOptions.mutex?.checkInterval || 100)
setTimeout(resolve, this.mutexOptions?.mutex?.checkInterval || 100)
);
}
}}

View File

@ -1,7 +1,7 @@
export type MutexOptions = {
redis: {
host: string;
port: number;
redis?: {
host?: string;
port?: number;
};
mutex?: {
checkInterval?: number;

View File

@ -4,12 +4,7 @@ import { MutexLock } from "../src/MutexLock";
test(
"redis mutex",
async () => {
const mutexLock = await MutexLock.create({
redis: {
host: "127.0.0.1",
port: 6379,
},
});
const mutexLock = await MutexLock.create();
const testLock = async () => {
const release = await mutexLock.obtainLock("test");