Simple request caching using Redis for request.
Tested with redis clients: node_redis, ioredis
npm i --save request-cache
Example
const requestCache = require('request-cache');
const rCache = requestCache(REDIS_CLIENT);
const cacheKey;
setInterval(function () {
const key = rCache('http://www.somethingawesome.com', function (err, resp, body) {
// Do something with the awesomeness
});
// First call - cacheKey is undefined; resp and body are cached and returned
// Second call - cacheKey === key; cached resp and body are returned
// Third call - cacheKey === key; cached resp and body are returned
// ...
// Three-thousand-six-hundredth call - cacheKey === key; new resp and body are cached and returned
cacheKey = key;
}, 1000);
function
⏏Kind: Exported function
Param | Type | Default | Description |
---|---|---|---|
redisClient | object |
an instance of a redis client | |
[options] | object |
Options for cache management | |
[options.algorithm] | string |
"md5" |
Any available system hashing algorithm to generate cache key (more info) |
[options.encoding] | string |
"hex" |
Encoding algorithm to use for encoding hashed cache key |
[options.ttl] | number |
3600 |
Time in seconds for cache time-to-live |
[options.refresh] | number |
0 |
Time in seconds to refresh time-to-live (this does not initiate a new request) |
[options.queryCacheKeys] | array |
Query param keys to use for generating cache key | |
[options.keyPrefix] | string |
Prefix for generated cache keys |
const requestCache = require('request-cache');
const rCache = requestCache(REDIS_CLIENT);
const cacheKey = rCache('http://www.somethingawesome.com', function (err, resp, body) {
// Do something with the awesomeness
});
const requestCache = require('request-cache');
const rCache = requestCache(REDIS_CLIENT);
const cacheKey = rCache({
url:'http://www.somethingawesome.com',
}, function (err, resp, body) {
// Do something with the awesomeness
});
const requestCache = require('request-cache');
const rCache = requestCache(REDIS_CLIENT, {
queryCacheKeys: ['foo']
});
const cacheKey = rCache({
url:'http://www.somethingawesome.com',
qs: {
foo: 'bar', // value used in cache key generation
far: 'boo'
}
}, function (err, resp, body) {
// Do something with the awesomeness
});
Apache 2.0