@invexa/nestjs-redis-warlock
@invexa/nestjs-redis-warlock
is a Redis-based locking utility for managing distributed locks in Node.js applications.
Installation
You can install the package using npm or pnpm.
npm
npm i @invexa/nestjs-redis-warlock
pnpm
pnpm i @invexa/nestjs-redis-warlock
Usage
To use @invexa/nestjs-redis-warlock in your project, follow these steps:
Initialization
You can initialize the WarlockModule in two ways: asynchronously or synchronously.
Asynchronous Initialization
If you need to fetch the Redis URL from a configuration service, you can use the forRootAsync method:
import { WarlockModule } from '@invexa/nestjs-redis-warlock';
import { ConfigService } from '@nestjs/config';
WarlockModule.forRootAsync({
useFactory: (configService: ConfigService) => {
return configService.get<string>("app.redis.url") || "redis://127.0.0.1:6379";
},
inject: [ConfigService],
});
Synchronous Initialization
If you have the Redis URL available, you can use the forRoot method:
import { WarlockModule } from '@invexa/nestjs-redis-warlock';
WarlockModule.forRoot("redis://127.0.0.1:6379");
Using the Warlock Decorator
You can use the @Warlock decorator to lock a function. The decorator accepts a key and an optional TTL (time to live) value in seconds.
import { Warlock } from '@invexa/nestjs-redis-warlock';
class SomeService {
@Warlock("key_example", 60)
async someFunction() {
}
}
The @Warlock decorator ensures that the function is locked based on the provided key, preventing concurrent executions.