質問: Ruby on Rails の ActionCable を勉強中です。 勉強をしていて一つ疑問に思ったのですが、 Ruby on Rails の ActionCable ではなぜ Redis が必要なのでしょうか? Node.js の Socket.io では、調べた限りでは特に Redis またはそれに近いミドルウェアは必要としないようでした。(この認識が間違っている場合は、それもご指摘いただければ幸いです。) Ruby on Rails も Redis を使わずに WebSocket による双方向通信ができないものかなと思いました。 ご存知の方がいらっしゃいましたら、ご教示いただければ幸いです。
回答: 実運用ではRailsアプリケーションとActionCableは別プロセス(やサーバ)になることが想定されるので、プロセスを超えてデータをやりとりする仕組みが必要になります。Redisはこのために使われます。Redis(ともう一つの選択肢であるPostgreSQL)が使われる理由は、標準でイベントベースの通信機能をサポートしているからです。 Socket.ioは詳しくないのですが、アプリケーションと別サーバで運用する場合やWebSocketサーバを複数運用しないといけない場合はプロセス間でのやりとりが必要となるのは変わりありませんので、それを(実運用に耐える形で)実装するにはRedisのようなミドルウェアが必要となるのではないかと思います。