@derhuerst/redis-stream
v2.0.1
Published
Redis 5 Streams as readable & writable Node streams. Plus a CLI.
Downloads
63
Maintainers
Readme
redis-stream
Redis 5 Streams as readable & writable Node streams. Plus a command line interface.
Installation
npm install @derhuerst/redis-stream
Command line usage
Usage:
write-into-redis-stream <stream-name>
Examples:
echo '{"user": "jane", "text": "hey!"}' | write-into-redis-stream chat-msgs
Usage:
read-from-redis-stream <stream-name> [--history] [--live [--waitTimoout <ms>]] [--limit <n>]
Options:
--live Wait for newly added items? Default: true
--waitTimeout -t How long to wait for newly added items. Default: Infinity
--history Read all past items from the stream? Default: false
--limit -l Maximum number of items to read. Default: Infinity
Examples:
read-from-redis-stream chat-msgs --live --limit 1000
Usage with JavaScript
Writing to a Redis Stream
const {createClient} = require('redis')
const createWriter = require('@derhuerst/redis-stream/writer')
const redis = createClient()
const writer = createWriter(redis, 'some-stream-name')
writer.once('finish', () => redis.quit())
writer.on('error', console.error)
writer.write({foo: 'bar'})
writer.end({hey: 'there!'})
Reading from a Redis Stream
const {createClient} = require('redis')
const createReader = require('@derhuerst/redis-stream/reader')
const redis = createClient()
const reader = createReader(redis, 'some-stream-name')
reader.on('data', console.log)
reader.on('error', console.error)
API
createWriter(redis, streamName)
Returns a readable stream in object mode.
createReader(redis, streamName, opt = {})
Returns a readable stream in object mode. opt
may be an object with the following entries:
live
: Wait for newly added items? Default:true
waitTimeout
: How long to wait for newly added items. Default:Infinity
history
: Read all past items from the stream? Default:false
limit
: Maximum number of items to read. Default:Infinity
License
This project is dual-licensed: My contributions are licensed under the Prosperity Public License, contributions of other people are licensed as Apache 2.0.
This license allows you to use and share this software for noncommercial purposes for free and to try this software for commercial purposes for thirty days.
Personal use for research, experiment, and testing for the benefit of public knowledge, personal study, private entertainment, hobby projects, amateur pursuits, or religious observance, without any anticipated commercial application, doesn’t count as use for a commercial purpose.
Buy a commercial license or read more about why I sell private licenses for my projects.
Contributing
If you have a question or need support using redis-stream
, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, refer to the issues page.
By contributing, you agree to release your modifications under the Apache 2.0 license.