Skip to content

This is an redis extension to manage singeltone client & cluster instances, cache & track entity identifiers in groups.

License

Notifications You must be signed in to change notification settings

tada5hi/redis-extension

Repository files navigation

Redis Extension 🍬

npm version main codecov semantic-release: angular

This a library, which provides additional features to the redis client library.

Table of Contents

Installation

npm install redis-extension --save

Features

  • ️‍️🕵️‍♀️ Watcher - Watch for specific events
  • 🏆 ScoreBoard - Store keys by score.
  • 🔌 JsonAdapter - Stringify value as json string on set and parse on get

Usage

Watcher

import {
    Watcher,
    createClient
} from "redis-extension";

const client = createClient();
client.set('foo', 'bar', 'PX', '500');

const watcher = new Watcher(client, {
    pattern: 'foo*',
});

// Register events
watcher.on('expire', (key) => {
    console.log(key);
    // foo
});

// Start watching
await watcher.start();

ScoreBoard

import {
    createClient,
    ScoreBoard,
} from "redis-extension";

const client = createClient();

const scoreBoard = new ScoreBoard(client, {
    key: 'users-online'
});

// add user with id: 1 to the stack (time: 1642423766)
scoreBoard.add(1);

// add user with id: 2 to the stack (time: 1642423866)
scoreBoard.add(2);

const output = scoreBoard.get({
    sort: 'DESC'
});

console.log(output);
// {
//      data: [
//          {id: 1, score: 1642423766},
//          {id: 2, score: 1642423866}
//      ],
//      meta: {
//          total: 2
//      }
// }

The score property represents the unix timestamp by default if it has not been set otherwise.

JsonAdapter

import {
    JsonAdapter,
    createClient
} from "redis-extension";

const client = createClient();

const jsonAdapter = new JsonAdapter(client);
await jsonAdapter.set('51f3509d-871b-48ad-af15-d1c9eb941362', {
    name: 'admin',
    // ...
});
const payload = jsonAdapter.get('51f3509d-871b-48ad-af15-d1c9eb941362');
console.log(payload);
// { name: 'admin', ... }

License

Made with 💚

Published under MIT License.

About

This is an redis extension to manage singeltone client & cluster instances, cache & track entity identifiers in groups.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published