@egomobile/redis
TypeScript icon, indicating that this package has built-in type declarations

3.0.0 • Public • Published

npm last build PRs Welcome

@egomobile/redis

Redis classes and utilities for Node.js 12 or later.

Install

Execute the following command from your project folder, where your package.json file is stored:

npm install --save @egomobile/redis

Usage

import RedisCache from "@egomobile/redis";

const cache = new RedisCache();

await cache.flush(); // remove all entries

// non existing values
await cache.get("foo"); // (undefined)
await cache.get("foo", "TM"); // "TM"

await cache.set("foo", "bar"); // set "bar" value to "foo" key
await cache.get("foo", "TM"); // "bar"

await cache.set("foo", null); // remove value
// alternative: await cache.set("foo", undefined)
await cache.get("foo", "TM"); // "TM"

Data fetchers

Data fetchers are higher ordered function, which ensure, that data is cached and loaded at least once successfully.

import axios from "axios";
import RedisCache from "@egomobile/redis";

const cache = new RedisCache();

// loadRandomUsers: (seed: string) => Record<string, any>
const loadRandomUsers = cache.createFetcher(
  // the name of the key where to store in
  // underlying `RedisCache` instance in `cache`
  "randomUsersKey",

  // the function to wrap
  async (seed: string) => {
    const response = await axios.get(
      `https://randomuser.me/api/?seed=${encodeURIComponent(seed)}`
    );

    // Record<string, any>
    return response.data;
  }
);

// first call MUST be successful, otherwise
// exception is re-thrown
const data1 = await loadRandomUsers("foobar1");

// should be same as `data1`, because it is cached
//
// this method does exactly the same as the function itself (and has its same structure), but
// returns an object with extended information and without throwing an error
const { value: data2 } = await loadRandomUsers.fetch("foobar2");

// reset and force reloading data
//
// after reset, the execution MUST be successful at least one time again
await loadRandomUsers.reset();
const data3 = await loadRandomUsers("foobar3");

Documentation

The API documentation can be found here.

Package Sidebar

Install

npm i @egomobile/redis

Weekly Downloads

2

Version

3.0.0

License

LGPL-3.0

Unpacked Size

45 kB

Total Files

18

Last publish

Collaborators

  • ekmobile
  • egodux
  • mkloubertego
  • mkloubert
  • ekegodigital