@invexa/nestjs-redis-warlock
v0.0.2
Published
`@invexa/nestjs-redis-warlock` is a Redis-based locking utility for managing distributed locks in Node.js applications.
Downloads
36
Readme
@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-warlockpnpm
pnpm i @invexa/nestjs-redis-warlockUsage
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) // TTL is 60 seconds
async someFunction() {
// function implementation
}
}The @Warlock decorator ensures that the function is locked based on the provided key, preventing concurrent executions.
