redis-loader

An io-redis like object that batches queries with dataloader

Usage no npm install needed!

<script type="module">
  import redisLoader from 'https://cdn.skypack.dev/redis-loader';
</script>

README

RedisLoader

An ioredis-like object that batches commands via dataloader. Under the hood we have dataloader utilize redis's multi transactions and pipelining to group commands called. We also support batching in streams, using bluestream to make sure promises/async functions play nice in them.

Installation

npm i --save redis-loader

or

yarn add redis-loader

Examples

// RedisLoader supports an optional logger function with stats on each batch of commands
function logger (stats) {
  //...
}
// set up like you would `ioredis`
const redis = redisLoader('redis://localhost:6379/1', { keyPrefix: 'foo', logger })

// or setup ioredis
const redis = new Redis(redisUrl, redisOptions)
const redisLoader = new RedisLoader({ redis, logger })

// three commands sent to Redis together in one multi
await Promise.all([
  redis.ping(),
  redis.dbsize(),
  redis.time()
])

// three commands sent separately to redis
await redis.ping()
await redis.dbsize()
await redis.time()