@technance/nestjs-redis-warlock
is a Redis-based locking utility for managing distributed locks in Node.js applications.
You can install the package using npm or pnpm.
npm i @technance/nestjs-redis-warlock
pnpm i @technance/nestjs-redis-warlock
To use @technance/nestjs-redis-warlock
in your project, follow these steps:
You can initialize the WarlockModule in two ways: asynchronously or synchronously.
If you need to fetch the Redis URL from a configuration service, you can use the forRootAsync method:
import { WarlockModule } from '@technance/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],
});
If you have the Redis URL available, you can use the forRoot method:
import { WarlockModule } from '@technance/nestjs-redis-warlock';
WarlockModule.forRoot("redis://127.0.0.1:6379");
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 '@technance/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.