redisでmasterのpublishをslaveのsubscribeで受け取る

redisは使った事はあるけれど、全然詳しくなくてmasterのpublishをslaveのsubscribeで受け取れるのかとか知らなかったので試してみた。redisはbrewでインストールした2.8.17のもの。

最初にmasterを起動する。

$ redis-server --port 7777

次に別のターミナルからslaveを起動する。

$ redis-server --port 7778 --slaveof 127.0.0.1 7777

また別のターミナルからslaveに接続してSUBSCRIBEをする。

$ redis-cli -p 7778
> SUBSCRIBE test
1) "subscribe"
2) "test"
3) (integer) 1

さらに別のターミナルからmasterに接続してPUBLISHをする。

$ redis-cli -p 7777
> PUBLISH test aaaaa
(integer) 0

slaveに接続しているターミナルにPUBLISHの結果が出力される。

$ redis-cli -p 7778
> SUBSCRIBE test
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "test"
3) (integer) 1
1) "message"
2) "test"
3) "aaaaa"

masterからのpublishをslaveのsubscribeで受け取れることがわかった。

ついでに、masterでsubscribeをしてslaveでpublishをしてみたらmasterは受け取れなかった。 masterでsubscribeをしてmasterでpublishをしたものは受け取れたが。

masterがお亡くなりになった場合は〜とか考えると、RedisSentinelを使うとかそういう事になるのかな?