4.1.0 • Published 2 years ago

@bechara/nestjs-redis v4.1.0

Weekly downloads
4
License
MIT
Repository
github
Last release
2 years ago

⚠️ Disclaimer: This project is opinionated and intended for personal use.


NestJS Redis Component

This package acts as a plugin for NestJS Core Components and adds Redis database connection and manipulation methods.

Installation

The following instructions considers you already have a project set up with @bechara/nestjs-core.

If not, please refer to documentation above before proceeding.

1. Install the new necessary dependencies:

npm i @bechara/nestjs-redis

2. Add these example variables to your .env (adjust accordingly):

REDIS_HOST='localhost'
REDIS_PORT=16420
REDIS_USERNAME='redis'
REDIS_PASSWORD='*****'

It is recommended that you have a local database in order to test connectivity.

3. Import RedisModule and RedisConfig into you boot script and configure asynchronously:

import { AppModule } from '@bechara/nestjs-core';
import { RedisConfig } from '@bechara/nestjs-redis';
import { RedisModule } from '@bechara/nestjs-redis';

void AppModule.bootServer({
  configs: [ RedisConfig ],
  imports: [
    RedisModule.registerAsync({
      inject: [ RedisConfig ],
      useFactory: (redisConfig: RedisConfig) => ({
        host: redisConfig.REDIS_HOST,
        port: redisConfig.REDIS_PORT,
        username: redisConfig.REDIS_USERNAME,
        password: redisConfig.REDIS_PASSWORD,
        keepAlive: 1 * 1000,
        // Check more options with Ctrl+Space
      }),
    }),
  ],
  exports: [ RedisModule ],
});

If you wish to change how environment variables are injected you may provide your own configuration instead of using the built-in RedisConfig.

4. Boot your application and you should see a successful connection message:

2021-03-27 00:02:54  NTC  [RedisService] Client connected at localhost

Usage

Import RedisModule into the domain you wish to use it, followed by injecting the RedisService at your desired provider.

Example

@Injectable()
export class UserService {}

  public constructor(
    private readonly redisService: RedisService,
  ) { }

}

The following methods will be available at this.redisService:

// Returns the underlying client for native operations
getClient(): Redis.Redis

// Gets a key serializing the output
get<T>(key: string): Promise<T>;

// Sets a key serializing the input and allowing custom options
set(params: RedisSetParams): Promise<void>;

// Sets a key and read its updated value
setGet<T>(params: RedisSetParams): Promise<T>;

// Deletes a key
delete(key: string): Promise<void>;

// Increments a key by any float amount and returns current value
increment(key: string, amount: number, options: RedisIncrementOptions): Promise<number>;

// Attempt to lock a key ensuring no other concurrent operation is using it
lock(key: string, options: RedisLockOptions): Promise<void>;

// Removes the lock from previously locked key
unlock(key: string): Promise<void>;

Full Example

Refer to example folder of this project for a full working example.

4.1.0

2 years ago

4.0.3

2 years ago

4.0.2

2 years ago

4.0.1

2 years ago

4.0.0

2 years ago

3.0.7

2 years ago

3.0.6

2 years ago

3.0.5

2 years ago

3.0.4

3 years ago

3.0.3

3 years ago

3.0.2

3 years ago

3.0.1

3 years ago

3.0.0

3 years ago

2.3.1

3 years ago

2.3.0

3 years ago

2.2.1

3 years ago

2.2.0

3 years ago

2.2.2

3 years ago

2.1.2

3 years ago

2.1.3

3 years ago

2.1.1

3 years ago

2.1.0

3 years ago

2.0.2

3 years ago

2.0.1

3 years ago

1.1.4

3 years ago

2.0.0

3 years ago

1.1.3

3 years ago

1.1.1

3 years ago

1.1.2

3 years ago

1.1.0

3 years ago

1.0.3

3 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago