@nestjs-redis/client
v1.0.0
Published
Flexible, production-ready Redis client module for NestJS with multi-connection support, built on the modern node-redis client
Maintainers
Readme
@nestjs-redis/client
Flexible, production-ready Redis client module for NestJS with multi-connection support
Features
- Multi-connection support (named connections)
- Client, Cluster, and Sentinel modes
- NestJS DI integration and lifecycle management
- Async configuration with
forRootAsync - Type-safe, production-ready
Installation
npm install @nestjs-redis/client redisQuick Start
// app.module.ts
import { Module } from '@nestjs/common';
import { RedisModule } from '@nestjs-redis/client';
@Module({
imports: [
RedisModule.forRoot({
options: { url: 'redis://localhost:6379' },
}),
],
})
export class AppModule {}// app.service.ts
import { Injectable } from '@nestjs/common';
import { InjectRedis } from '@nestjs-redis/client';
import type { RedisClientType } from 'redis';
@Injectable()
export class AppService {
constructor(@InjectRedis() private readonly redis: RedisClientType) {}
async setValue(key: string, value: string) {
await this.redis.set(key, value);
}
async getValue(key: string) {
return this.redis.get(key);
}
}Multi-Connection
@Module({
imports: [
RedisModule.forRoot({
isGlobal: true,
options: { url: 'redis://localhost:6379' },
}),
RedisModule.forRoot({
connectionName: 'cache',
type: 'client',
options: { url: 'redis://cache:6379' },
}),
RedisModule.forRoot({
connectionName: 'cluster',
type: 'cluster',
options: { rootNodes: [{ url: 'redis://cluster:6379' }] },
}),
],
})
export class AppModule {}Debug Logging
Enable detailed Redis connection logging by setting the REDIS_MODULE_DEBUG environment variable:
REDIS_MODULE_DEBUG=true npm startThis provides comprehensive logging of Redis connection lifecycle events:
[RedisModule] [Connection=<empty>]: Creating Redis client...
[RedisModule] [Connection=<empty>]: Connecting to Redis...
[RedisModule] [Connection=<empty>]: [Event=connect] Connection initiated to Redis server
[RedisModule] [Connection=<empty>]: [Event=ready] Redis client is ready to accept commands
[RedisModule] [Connection=<empty>]: Redis client connected
...
[RedisModule] [Connection=<empty>]: Closing Redis connection
[RedisModule] [Connection=<empty>]: [Event=end] Connection closed (disconnected from Redis server)
[RedisModule] [Connection=<empty>]: Redis connection closed
All available event types can be checked at official node-redis docs
API
@InjectRedis(name?)RedisToken(name?)RedisModule.forRoot(options)/forRootAsync(options)
Links
- Root repo: CSenshi/nestjs-redis
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Contributing
Please see the root contributing guidelines.
License
MIT © CSenshi
