redis-cache-dataloader
v0.3.4
Published
A wrapper for dataloader that uses redis as a cache layer in place of the default memory cache
Downloads
23
Readme
redis-cache-dataloader
A wrapper for dataloader that uses redis as a cache layer in place of the default memory cache. This is able to be swapped with dataloader without changing any code.
Quick Links:
Install
npm install redis-cache-dataloader --save
config
setup RedisDataLoader config. You will need to pass in the redis port and ip address. You can also disable redis usage. this will use dataloader normally with caching enabled.
// 1. using env vars
process.env.REDIS_PORT = 6379; // default: 6379;
process.env.REDIS_IP = '127.0.0.1'; // default: '127.0.0.1';
process.env.DISABLE_REDIS = false; // default: false
process.env.REDIS_EXPIRE = 60; // default: undefined. value is seconds
// 2. using config function
const RedisDataLoader = require('redis-cache-dataloader');
RedisDataLoader.config({
redisPort: process.env.REDIS_PORT, // default: 6379;
redisIP: process.env.REDIS_IP, // default: '127.0.0.1';
disableRedis: process.env.DISABLE_REDIS, // default: false
expire: process.env.REDIS_EXPIRE // default: undefined
});
Create RedisDataLoader
Create a new RedisDataLoader instance. This has the same interface as DataLoader so you can use it exactly the same way. DataLoader link Loading Data Eaxamples
const RedisDataLoader = require('redis-cache-dataloader');
// id you want to not use redis when developing locally you can disable the redis cache, which will then turn on in memory caching
// RedisDataLoader.config({ disableRedis: true });
var loader = new RedisDataLoader('itemPrefix', keys => {
// connect to data source. Check out Loading Data Examples link above
return new Promise((resolve, reject) => {
resolve(keys.map(key => {
return { id: key };
}));
});
});
// prime cache
loader.prime(1)
// load
loader.load(1);
// clear
loader.clear(1);
// Disable cache on loader
var loader = new RedisDataLoader('itemPrefix', keys => {
// connect to data source. Check out Loading Data Examples link above
return new Promise((resolve, reject) => {
resolve(keys.map(key => {
return { id: key };
}));
});
}, { cache: false });