yet-another-redis-cache
TypeScript icon, indicating that this package has built-in type declarations

0.2.5 • Public • Published

GitHub package.json version NPM CircleCI codecov

YET ANOTHER REDIS CACHE

As the name implies, this is yet another (booooring) Redis-backed cache. However, this is not completely true. In fact, it has some useful, not seen, functionality which I wanted to leverage for my own projects. And since I didn't find the features, I decided to release this as another npm package, trying to give back to the OS community.

Intro

So, long story short, the purpose of this package is ... guess what ... caching. Therefore, you will find the regular get/set methods plus some minimal options. Details to follow below.

The real interesting part comes, when you want to add (or get) more than just one value at once.

Let's say, I want to cache an arbitary amount of keys/vals at once.

For that I can now use getBulk and setBulk which allow me to add or retrieve these in one Redis backend call.

Getting started

yarn add yet-another-redis-cache

Features

  • Works out of the box
  • provides regular cache functionality like get, set, delete
  • provides bulk cache functionality getBulk, setBulk, deleteBulk (one Redis transaction)
  • flexible expiration of keys by either setting them on the instantiation or per setter

Usage

  // create cache instance with a default of 5 seconds ttl per entry and a group prefix "example"
  const redisCache = new RedisCache(process.env.REDIS_URL, { groupKeyPrefix: 'example', ttl: 5 });
  const valuesToCache = {
      "identifier-1": "abdcef",
      "identifier-2": "bcdef1",
      "identifier-3": "cdef12",
      "identifier-4": "99aabb"
  };
  await redisCache.setBulk(valuesToCache);

The above code snippet will run in one Redis transaction. When a new request with a (sub-)set of the above keys comes in, we can create a single-transaction cache lookup with the following code

  const cachedResults = await redisCache.getBulk(['identifier-2', 'identifier-3', 'identifier-10']);

The cachedResults will look like the following:

  {
      "identifier-2": "bcdef1",
      "identifier-3": "cdef12",
      "identifier-10": null
  }

Allowing you to retrieve the result for identifier-10, cache and return the whole set

Besides the two bulk getter/setter, you can also use the regular get/set like

  await redisCache.set('regular-key', {'test': true});
  ...
  ...
  const cachedValue: { test: boolean } = await redisCache.get('regular-key');

Additionally to the getter/setter, we can also delete(key: string) and deleteBulk(keys: string[]) explicit elements from the cache or get a list of keys with a certain pattern by calling await redisCache.keys('my-pattern*') for example.

Run tests

yarn test

Package Sidebar

Install

npm i yet-another-redis-cache

Weekly Downloads

2

Version

0.2.5

License

MIT

Unpacked Size

25.9 kB

Total Files

10

Last publish

Collaborators

  • mvelten773