私の意見では、MySQL を使用します。
決定を下す際に考慮すべき最大のポイントは次の 2 つです。
1)ユースケースについて考えたことはありますか?
フォロワーシステムを実装したいとおっしゃっていました。各ユーザーが持っているフォロワーのリストのみを表示する場合は、RedisSET
で十分です。
しかし、「現在フォローしているユーザーのリスト」のリストを取得したい場合はどうでしょうか。Redis から簡単に掘り出すことはできませんよSET
ね? または、User-X が User-A をフォローしているかどうかを知りたい場合はどうでしょうか。User-A のフォロワーが 10,000 人だった場合、これも簡単ではないでしょうか。
さまざまなシーンでさまざまなタイプの結果をクエリする場合、MySQL ははるかに柔軟です。
2)性能差は本当に必要ですか?
ご存じのように、このような場合、Redis は MySQL よりも高速です。単純な Key-Value システムなので、MySQL のパフォーマンスを上回ります。次のようなパフォーマンス結果を確認します。
http://colinhowe.wordpress.com/2009/04/27/redis-vs-mysql/
http://ruturaj.net/redis-memcached-tokyo-tyrant-and-mysql-comparison/
しかし、Redis と MySQL のパフォーマンスの違いは、約 5,000 リクエスト/秒の後で初めて実際に現れ始めます。そうしないと、50 ミリ秒以上の差は見られないでしょう。
非常に大きなトラフィックが発生するまで、パフォーマンスの違いは問題になりません。
したがって、この 2 点を考慮すると、MySQL の方が適切な答えになります。
Redis は、次の場合にのみ有効です。
1) セット/リストの目的は具体的であり、将来的に柔軟性を必要としない
2) パフォーマンスの違いが実際にアーキテクチャに影響を与えると感じている。