RedisのPub/Subは面白そう at Kitazawa.rb #10

Pocket

11/26(土)はKitazawa.rbの日でした。地域技術者コミュニティとしてゆるく活動しているKitazawa.rbですが、ついに10回目になりました。会場はOpenSource Cafe。勉強会用に場所を借りるのは別料金のようですが、オープンソースに関連した話だと半額になるようです。一応Rubyのコミュニティなので、半額にしてもらいました。ありがとうございました!

発表ネタがあったのは@yoheiさんのRedisの話とbackbone.js。backbone.jsの話は@mah_labが先日話したものの焼き増しです。

Redisの話

Redisとは永続化に対応しているインメモリDB(KVS)です。memcachedよりも速いという話。爆速ですね。

基本はcacheサーバとして使うと思うのですが、Instagramは写真とユーザの紐付きをRedisで永続化しているようです。とはいえ、Redisは単純すぎるKVSのためそのままクラスタ構成を取ることができないため、EC2のハイメモリタイプを使うというスケールアップで実現しているようです。

herokuでも使えます

Redis To Goというアドオンを使えばherokuでもredisを使うことができます。herokuかわいいよheroku。

Pub/Subが気になる

ところでRedisはPub/Sub型の通信をサポートしています。Pub/Sub型通信というのは、メッセージを作成して送信する送信側サーバをPublisher、受信する側のクライアントをSubscriberとするメッセージングモデルのことです。KVSにこういった機能が備わっているのは珍しいらしく、リアルタイムWebが注目される昨今ではかなり使えそうな機能です。

というのも、Redisを中継サーバとすることでWebSocketサーバをスケールアウトさせることができるからです。

EventMachineでWebSocketサーバを立てた時の例:PubSubbin’ with Redis, EventMachine, and WebSockets

node.jsでWebSocketサーバを立てた時の例:Redis の Pub/Sub を使って Node.js + WebSocket のスケールアウトを実現する方法

そのうちリアルタイムWebを活用したサービスもやってみたいですねえ。