@egomobile/redis
v3.0.0
Published
Redis classes and utilities for Node.js 18 or later.
Downloads
7
Readme
@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.