bash - 读取 redis-cli 订阅的标准输出并在消息上运行 bash 命令

标签 bash redis systemd etcd

我想要一个读取 redis-cli 的标准输出的 bash 脚本订阅并在收到消息时执行某些操作以及消息值。

订阅可以作为参数传递给 redis-cli像这样

redis-cli --raw subscribe foo

但是我需要将该标准输出通过管道传输到某个东西,以便我可以解析消息。我考虑过使用 while read line; do循环,但单个 redis 消息占用 3 行。

更新

我的结局是通过在 etcd 上设置一个键来宣布一个新的 redis master。这应该可以通过订阅 switch-master 来实现。 redis哨兵上的 channel 。 [1] 该消息的值应该类似于 <master name> <oldip> <oldport> <newip> <newport>。我想设置 newip作为 etcd 上的一个值。

收到该消息时我想运行的命令是 etcdctl set /redis/master $NEWIP

[1] http://redis.io/topics/sentinel

最佳答案

因为 redis-cli 订阅输出当前被缓冲 ( https://github.com/antirez/redis/issues/2074 ) 目前这是不可能的。

关于bash - 读取 redis-cli 订阅的标准输出并在消息上运行 bash 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26215300/

相关文章:

yocto - 将 systemctl 命令添加到 yocto 镜像

ruby-on-rails - Rails、Sidekiq 和 systemd 在 debian 8 上

java - 停止守护进程不终止子java进程

scala - 我需要一个 Scala 中的客户端库用于 Redis 集群

linux - 使用 sudo 检查已安装的软件

redis - Redis 中键值对的存储方式

ruby-on-rails - 如何正确使用/插入Redis与Rails?

systemd - 如何在 systemd 的看门狗停止服务之前运行特定程序

linux - Bash 复制文件夹内容,而不是文件夹

linux - 将 .dat 文件中的表格转换为 HTML 表格