フォロワー/フォロー中のユーザーデータを保存するための最良の候補を見つけようとしています。最初は、ユーザー -> ユーザー ID のセットで Redis に保存することを考えていましたが、100 万を超えるシナリオについて考えました1 人のユーザーが 1,000 万人のフォロワーを持つ場合、Redis はどのようにそのような巨大なセットを処理するのでしょうか? また、redis のセットでページネーションを実行する方法はありません。セット全体を取得する必要があります。これは、ユーザーが自分の後に続くユーザーをブラウズしたい場合には機能しません。MySQL に保存すれば間違いなくページネーションを行うことができますが、ユーザー フィードを構築する必要があるたびに、データベースから 1000 万件のレコードを取得するのに長い時間がかかる可能性があります。私はこれを古いバッチ方式で行うことができますが、多くのフォロワーを持つユーザーが何かを投稿し、フォロワーを取得するためだけにこれらの 1,000 万件のレコードを処理するのは、かなり苦痛に思えます。ページネーション (主にフロントエンド) 用に MySQL に保存し、アクティビティ フィードを構築するイベント駆動型メッセージング用に Redis に保存する価値はありますか?
質問する
565 次
1 に答える
0
このタスクに redis を使用するか mysql を使用するかは個人的な決定です。どちらも、これらの 1,000 万件のレコードに問題はありません。
MySQL には、データベースからフォロワーのサブセットを取得するための LIMIT x,y コマンドがあります。
redis の場合、ソート済みセットを使用して、フォロワーのユーザー ID またはユーザーがフォローを開始した時刻をソート済みセットのスコアとして使用できます。また、MySQL と同様に、redis は大規模なソート済みセットのサブセットの取得をサポートしています。
于 2013-03-26T13:31:00.170 に答える