我想要一个读取 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
最佳答案
因为 redis-cli 订阅输出当前被缓冲 ( https://github.com/antirez/redis/issues/2074 ) 目前这是不可能的。
关于bash - 读取 redis-cli 订阅的标准输出并在消息上运行 bash 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26215300/