Redis がフィード フローを実装する方法

coldplay.xixi
リリース: 2021-02-01 17:26:48
転載
2057 人が閲覧しました

TodayRedis チュートリアル 列では、フィード フローの実装方法を見てみましょう

Redis がフィード フローを実装する方法

1 はじめに

Moments と Weibo はすべてフィード フロー製品ですが、写真共有 Web サイト Pinterest や Huapet.com もあります。種類 フォーム内のフィードストリーム製品。多くのアプリには、ニュースまたはメッセージ プラザと呼ばれるモジュールもあり、これらもフィード ストリーミング製品です。

コアコンセプト

  • フィード
    フィードストリーム内の各ステータスまたはメッセージ。たとえば、Moments のステータスはフィードであり、Weibo の Weibo 投稿もフィードです。
  • フィード ストリーム
    コンテンツを継続的に更新してユーザーに提示する情報ストリーム。みんなの友達の輪、Weibo のフォローページなどはすべてフィード ストリームです。
  • タイムライン
    フィード ストリームの一種である Weibo と Moments はいずれもタイムライン タイプのフィード ストリームですが、タイムライン タイプは最も早く登場し、最も広く使用され、最もよく知られているため、タイムライン タイプのフィード ストリームです。フィードの流れを表すために使用されることがあります。
  • フォローページのタイムライン
    モーメントや Weibo ホームページなど、他の人のフィード メッセージを表示するページ。
  • 個人ページタイムライン
    WeChatのフォトアルバムやWeiboの個人ページなど、自分が送信したフィードメッセージが表示されるページです。

2 機能

  • マルチアカウント コンテンツ フロー
    フィード フロー システムには間違いなく数千のアカウントが存在します。 、フォロー解除、友達追加、ブロックなどの操作が可能です。この条件が満たされる限り、供給流システムとして設計できます。
  • 不安定なアカウント関係
    フォローやフォロー解除などの操作により、システム内のユーザー間の関係は常に変化し、不安定な状態となります。
  • 読み取りと書き込みの比率 100:1
    読み取りと書き込みには深刻な不均衡があり、読み取りが多くなり、書き込みが少なくなります。一般的な読み取りと書き込みの比率は 10:1、または 100:1 以上です。 。
  • メッセージ配信に対する高い要件
    たとえば、友人グループにメッセージを送信した後、一部の友人はそれを見て、一部の友人はそれを見ていなかった場合、深刻な結果を引き起こす可能性があります。感情的な対立は深刻な結果をもたらします。

3 カテゴリ

  • タイムライン
    公開時間順に並べ替えます。最初に公開されたものが最初に表示され、後で公開されたものがランク付けされます。最後に. トップはWeChat MomentsやWeiboなどと似ています。これも最も一般的な形式です。製品がタイムライン タイプを選択した場合、フィード ストリームにはそれほど多くのフィードはありませんが、各フィードは重要であり、ユーザーに表示される必要があることを意味します。
  • ランク
    通常はユーザーの好みに従って、時間以外の要素で並べ替えます。ユーザーのお気に入りが最初にランク付けされ、2 番目にお気に入りが最後にランク付けされます。これは一般に、ユーザーが多くのフィードを見る可能性があり、ユーザーがここで費やす時間は限られていると想定しており、ユーザーが最も見たい上位 N 件の結果がユーザーに選択されます。アプリケーション シナリオには、写真の共有、ニュースの推奨が含まれます、商品、おすすめなど。

4 問題点

4.1 ストレージ

このプロジェクトのフィードは比較的単純なので、類似しています。したがって、MySQL ストレージを使用できますが、フィード ストリームが比較的複雑なデータ構造を持つ場合は、MongoDB や HBase など、ストレージをより便利で効率的にする NoSQL データベースを使用する必要があります。

4.2 プッシュ

プッシュ スキームには、次の 3 つのスキームがあります。

プル モード

読み取り拡散とも呼ばれる、ユーザーは自分のフォロワーのフィード コンテンツを率先して取得します。
つまり、ユーザー (特に多くの人をフォローしているユーザー) が行動をトリガーすると、独自の更新をプルし、ユーザーのフォロー リストを取得し、フォロー リストに基づいて新しいフィードを取得します。ユーザーがフォローしている人が多すぎる場合、ユーザーのウォッチ リストをクエリすると、大量のデータ コストがかかります。

プッシュ モード

は書き込み拡散とも呼ばれます。ユーザーがフィードを追加すると、そのフィードはフォローしているユーザーに自動的に通知されます。 (好ましい)。
つまり、ユーザーが行動 (Weibo への投稿など) をトリガーすると、ユーザー自身の行動が行動テーブルに記録され、ユーザーのファン テーブルにも対応し、ファンごとにフィードが挿入されます。ただし、10,000 を超えるファンを備えた大規模な V の場合、各ファンにフィードを挿入すると、データを保存するのに非常にコストがかかります。

Redis ソート セット (タイムラインを時間で並べ替えるのに便利) を使用して、ファンのフィード コレクションを維持します。ブロガーがフィードを追加すると、コンテンツをファンのフィード コレクションに積極的にプッシュするため、ユーザーはコレクションからすぐに読み取るのは非常に便利です

プッシュとプルの組み合わせ

たとえば、Weibo では、ほとんどのユーザーは数百のアカウント関係を持っていますが、一部のユーザーはhave 1,000 10,000元を超える場合にのみ使用します。

オンライン プッシュ、オフライン プル

  • 大V發動態,只同步發布動態給同時在線的粉絲,離線的粉絲上線後,再去拉取動態。來完成推與拉。

定時推,離線拉

大V發動態之後,以常駐進程的方式定時推送到粉絲動態表。

5 表格設計


#推薦(免費): redis教程

#

以上がRedis がフィード フローを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート