Yet another redis cache is, as the name implies, a redis cache implementation. But with the additional ability to bulk operate on cache keys (get/set/delete)
MIT License
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.
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.
yarn add yet-another-redis-cache
// 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.
yarn test