You're Invited:Meet the Socket Team at RSAC and BSidesSF 2026, March 23–26.RSVP
Socket
Book a DemoSign in
Socket

@eggjs/redis

Package Overview
Dependencies
Maintainers
8
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@eggjs/redis

Valkey / Redis plugin for egg

Source
npmnpm
Version
4.0.2-beta.0
Version published
Weekly downloads
175
-89.36%
Maintainers
8
Weekly downloads
 
Created
Source

@eggjs/redis

NPM version Known Vulnerabilities npm download Node.js Version PRs Welcome CodeRabbit Pull Request Reviews

Valkey / Redis client (support redis protocol) based on iovalkey for egg framework

Version Notes

@eggjs/redis only supports egg@4 now, if you are using egg@3 or egg@2, you should use egg-redis.

Install

npm i @eggjs/redis

Valkey / Redis Plugin for egg, support egg application access to Valkey / Redis Service.

This plugin based on ioredis. If you want to know specific usage, you should refer to the document of ioredis.

Configuration

Change ${app_root}/config/plugin.ts to enable redis plugin:

import redisPlugin from '@eggjs/redis';

export default {
  ...redisPlugin(),
};

Configure redis information in ${app_root}/config/config.default.ts:

Single Client

import { defineConfig } from 'egg';

export default defineConfig({
  redis: {
    client: {
      port: 6379, // Redis port
      host: '127.0.0.1', // Redis host
      password: 'auth',
      db: 0,
    },
  },
});

Multi Clients

import { defineConfig } from 'egg';

export default defineConfig({
  redis: {
    clients: {
      foo: {
        // instanceName. See below
        port: 6379, // Redis port
        host: '127.0.0.1', // Redis host
        password: 'auth',
        db: 0,
      },
      bar: {
        port: 6379,
        host: '127.0.0.1',
        password: 'auth',
        db: 1,
      },
    },
  },
});

Sentinel

import { defineConfig } from 'egg';

export default defineConfig({
  redis: {
    client: {
    // Sentinel instances
    sentinels: [
      {
        port: 26379, // Sentinel port
        host: '127.0.0.1', // Sentinel host
      },
      // other sentinel instance config
    ],
    name: 'mymaster', // Master name
    password: 'auth',
    db: 0,
  },
};

No password

Redis support no authentication access, but we are highly recommend you to use redis requirepass in redis.conf.

$vim /etc/redis/redis.conf

requirepass xxxxxxxxxx  // xxxxxxxxxx is your password

Because it may be cause security risk, refer:

If you want to access redis with no password, use password: null.

See ioredis API Documentation for all available options.

Customize ioredis version

@eggjs/redis using ioredis@5 now, if you want to use other version of iovalkey or ioredis, you can pass the instance by config.redis.Redis:

// config/config.default.ts

import { defineConfig } from 'egg';

export default defineConfig({
  redis: {
    Redis: require('ioredis'), // customize ioredis version, only set when you needed
    client: {
      port: 6379, // Redis port
      host: '127.0.0.1', // Redis host
      password: 'auth',
      db: 0,
    },
  },
});

weakDependent

import { defineConfig } from 'egg';

export default defineConfig({
  redis: {
    client: {
      port: 6379, // Redis port
      host: '127.0.0.1', // Redis host
      password: 'auth',
      db: 0,
      weakDependent: true, // the redis instance won't block app start
    },
  },
});

Usage

In controller, you can use app.redis to get the redis instance, check ioredis to see how to use.

// app/controller/home.ts

import { Controller } from 'egg';

export default class HomeController extends Controller {
  async index() {
    const { ctx, app } = this;
    // set
    await app.redis.set('foo', 'bar');
    // get
    ctx.body = await app.redis.get('foo');
  }
}

Multi Clients

If your Configure with multi clients, you can use app.redis.get(instanceName) to get the specific redis instance and use it like above.

// app/controller/home.ts

export default class HomeController extends Controller {
  async index() {
    const { ctx, app } = this;
    // set
    await app.redis.getSingletonInstance('instance1').set('foo', 'bar');
    // get
    ctx.body = await app.redis.getSingletonInstance('instance1').get('foo');
  }
}

Clients Depend on Redis Cluster

Before you start to use Redis Cluster, please checkout the document first, especially confirm cluster-enabled yes in Redis Cluster configuration file.

In controller, you also can use app.redis to get the redis instance based on Redis Cluster.

// app/config/config.default.ts
import { defineConfig } from 'egg';

export default defineConfig({
  redis: {
    client: {
      cluster: true,
      nodes: [
        {
          host: '127.0.0.1',
          port: '6379',
          family: 'user',
          password: 'password',
          db: 'db',
        },
        {
          host: '127.0.0.1',
          port: '6380',
          family: 'user',
          password: 'password',
          db: 'db',
        },
      ],
    },
  },
});

// app/controller/home.ts
import { Controller } from 'egg';

export default class HomeController extends Controller {
  async index() {
    const { ctx, app } = this;
    // set
    await app.redis.set('foo', 'bar');
    // get
    ctx.body = await app.redis.get('foo');
  }
}

For the local dev

Run docker compose to start test redis service

docker compose -f docker-compose.yml up -d

Run the unit tests

pnpm test

Stop test redis service

docker compose -f docker-compose.yml down

Questions & Suggestions

Please open an issue here.

License

MIT

Contributors

Contributors

Made with contributors-img.

Keywords

Valkey

FAQs

Package last updated on 25 Feb 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts