# @bechara/nestjs-redis

> NestJS module wrapper around Redis IO

Latest version **4.1.0** (published 2022-04-14) · MIT license · 0 weekly downloads

## Install

```sh
npm install @bechara/nestjs-redis
pnpm add @bechara/nestjs-redis
yarn add @bechara/nestjs-redis
bun add @bechara/nestjs-redis
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 4.1.0 |
| Published | 2022-04-14 |
| First published | 2020-11-03 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 34.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Etienne Bechara |
| Maintainers | bechara |

## Links

- npm: https://www.npmjs.com/package/@bechara/nestjs-redis
- Repository: https://github.com/etienne-bechara/nestjs-redis
- Homepage: https://github.com/etienne-bechara/nestjs-redis#readme
- Issues: https://github.com/etienne-bechara/nestjs-redis/issues
- npm.io page: https://npm.io/package/@bechara/nestjs-redis

## Dependencies (1)

- [ioredis](https://npm.io/package/ioredis.md) 5.0.4

## Recent versions

- 4.1.0 (latest) — 2022-04-14
- 4.0.3 — 2022-03-22
- 4.0.2 — 2022-03-22
- 4.0.1 — 2022-03-04
- 4.0.0 — 2022-03-04
- 3.0.7 — 2022-01-28
- 3.0.6 — 2021-12-13
- 3.0.5 — 2021-11-15
- 3.0.4 — 2021-10-29
- 3.0.3 — 2021-08-27
- 3.0.2 — 2021-08-09
- 3.0.1 — 2021-08-09
- 3.0.0 — 2021-08-03
- 2.3.1 — 2021-07-01
- 2.3.0 — 2021-04-29
- … 19 more at https://npm.io/package/@bechara/nestjs-redis/versions

## README

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

---

# NestJS Redis Component

This package acts as a plugin for [NestJS Core Components](https://github.com/etienne-bechara/nestjs-core) and adds Redis database connection and manipulation methods.


## Installation

The following instructions considers you already have a project set up with [@bechara/nestjs-core](https://www.npmjs.com/package/@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:

```ts
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**

```ts
@Injectable()
export class UserService {}

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

}
```

The following methods will be available at `this.redisService`:

```ts
// 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.

---
_Source: https://npm.io/package/@bechara/nestjs-redis · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
