Description
Pipe stdin to a redis pub/sub channel.
Description
pub
is an executable for piping data from stdin to a specified Redis pub/sub channel.
A typical use for this tool is to tail a log file, match a specific line with grep, and pipe it into Redis where multiple consumers can do something different with each incoming log line:
tail -F /var/log/somelogfile.log | grep "tracker.gps.parsed" | pub loglines
It also comes with a utility named sub
for piping from a Redis pub/sub channel to stdout:
sub loglines | grep "somemsg"
README.md
Welcome!
The pub
utility publishes input from stdin to a redis channel and the sub
utility consumes from a redis channel, writing to stdout.
Quickstart
Publishing to Redis from stdin
is easy with the pub
utility:
$ pub --help
Pipe stdin to a redis pub/sub channel
Usage: pub --channel TEXT [--host STRING] [--port INTEGER] [--db INTEGER]
[--version]
Available options:
-h,--help Show this help text
--channel TEXT Redis channel to publish to
--host STRING Redis host (default: localhost)
--port INTEGER Redis post (default: 6379)
--db INTEGER Redis db (default: 0)
$ journalctl -f nginx.service | pub --channel "nginx-loglines"
and subscribing to Redis channels and piping to stdout
is also easy with the sub
utility:
$ sub --help
Subscribe to redis channels and pipe to stdout
Usage: sub [--channel TEXT]... [--host STRING] [--port INTEGER] [--db INTEGER]
[--version]
Available options:
-h,--help Show this help text
--channel TEXT... Redis channel(s) to subscribe to
--host STRING Redis host (default: localhost)
--port INTEGER Redis post (default: 6379)
--db INTEGER Redis db (default: 0)
$ sub --channel "nginx-loglines" --channel "haproxy-loglines" # This subscribes to both redis channels
Building
You can build multiple ways:
stack build
cabal build
nix-build --not-out-link -A pub release.nix
nix-shell -A pub.env release.nix
.