Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/goliatone/core.io-cache-redis
redis cache store
https://github.com/goliatone/core.io-cache-redis
Last synced: 11 days ago
JSON representation
redis cache store
- Host: GitHub
- URL: https://github.com/goliatone/core.io-cache-redis
- Owner: goliatone
- License: mit
- Created: 2021-01-28T19:40:15.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2022-12-07T20:23:10.000Z (almost 2 years ago)
- Last Synced: 2024-10-11T09:08:22.400Z (27 days ago)
- Language: JavaScript
- Size: 241 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE-MIT
Awesome Lists containing this project
README
## core.io Cache Redis
This package provides a module for the [core.io](https://npmjs.com/package/core.io) library.
### Install
```
$ npm i -S core.io-cache-redis
```### Usage
The `CacheClient` exposes a `tryGet` function that takes a key, a `fallback` function and an options object.
* `key`: Either a string or an object that will be used to create a cache identification key. If key is not found in the cache we call `fallback` and store the functions output in cache using key as identifier. Next time we call `tryGet` we return the cached value.
* `fallback`: Some (expensive) function that we want to cache the outputs of its execution.**Options**:
* `ttl` default(defaultTTL): Time to live for the key after which the key expires.
* `deserialize` default(`true`): Call `deserialize` on the cached value
* `addTimestamp` default(`true`): Add a time-stamp to the cached value
* `throwOnError` default(`false`): If `true` any errors while calling `fallback` will be thrown, else returned in the value
* `forceCacheMiss` default(`false`): Function or boolean to check if we want to force `fallback` call.```js
result = await cache.tryGet(query, async _ => {
return await service.query(query);
});
```#### Key Hashing
We can use strings or objects as the raw source for the cache key. If the raw key is an object will be serialized to a string.
Then the create an `md5` hash with the key and prepped the `cacheKeyPrefix`.By default the `serialize` and `deserialize` functions are mapped to `JSON.stringify` and `JSON.parse` respectively.
If our raw key is the following object:
```js
const query = { limit: 100, order: 'DESC', where: { id: 23 } };
let key = cache.hashKey(query);
assert(key === 'cache:1239ecd04b073b8f4615d4077be5e263');
```## License
® License by goliatone