Heim  >  Artikel  >  Web-Frontend  >  Wie Redis den Feedflow implementiert

Wie Redis den Feedflow implementiert

coldplay.xixi
coldplay.xixinach vorne
2021-02-01 17:26:481986Durchsuche

HeuteRedis-TutorialSpalte werfen wir einen Blick darauf, wie man den Feed-Flow implementiert

Wie Redis den Feedflow implementiert

1 Einführung

Moments, Weibo, sind alle Feed-Flow-Produkte sowie Bilder Sharing-Websites Pinterest, Huaban.com usw. sind eine weitere Form von Feed-Flow-Produkten. Viele Apps verfügen auch über ein Modul namens News oder Message Plaza, bei denen es sich ebenfalls um Feed-Streaming-Produkte handelt.

Kernkonzept

  • Feed
    Jeder Status oder jede Nachricht im Feed-Stream. Beispielsweise ist ein Status in Moments ein Feed und ein Weibo-Beitrag in Weibo ein Feed.
  • Feed Stream
    Ein Informationsstream, der Inhalte kontinuierlich aktualisiert und den Benutzern präsentiert. Jeder Freundeskreis, die Weibo-Follow-Seite usw. sind alle ein Feed-Stream.
  • Timeline
    Eine Art Feed-Stream, Weibo und Moments sind allesamt Feed-Streams vom Typ Timeline. Da der Timeline-Typ jedoch am frühesten erscheint, am häufigsten verwendet wird und am bekanntesten ist, wird Timeline manchmal zur Darstellung verwendet Feed-Stream.
  • Zeitleiste der Folgeseite
    Eine Seite, auf der die Feed-Nachrichten anderer Personen angezeigt werden, z. B. Moments und die Weibo-Startseite.
  • Zeitleiste der persönlichen Seite
    Eine Seite, auf der die von Ihnen gesendeten Feed-Nachrichten angezeigt werden, z. B. das Fotoalbum in WeChat und die persönliche Seite auf Weibo.

2 Funktionen

  • Multi-Account-Content-Flow
    Es wird definitiv Tausende von Accounts im Feed-Flow-System geben. Konten können verfolgt, nicht mehr verfolgt, als Freunde hinzugefügt und blockiert werden. Solange diese Bedingung erfüllt ist, kann es als Zulaufsystem ausgelegt werden.
  • Instabile Kontobeziehung
    Aufgrund von Vorgängen wie „Folgen“ und „Entfolgen“ ändert sich die Beziehung zwischen Benutzern im System ständig, was einen instabilen Zustand darstellt.
  • Lese- und Schreibverhältnis 100:1
    Es besteht ein gravierendes Ungleichgewicht beim Lesen und Schreiben, mit mehr Lesen und weniger Schreiben. Das allgemeine Lese- und Schreibverhältnis beträgt 10:1 oder sogar mehr als 100:1.
  • Die Anforderungen an die Nachrichtenübermittlung sind hoch
    Nachdem Sie beispielsweise eine Nachricht an einen Freundeskreis gesendet haben, haben einige Freunde sie gesehen und andere nicht. Wenn die Freundin sie nicht gesehen hat, kann es zu schwerwiegenden emotionalen Konflikten und schwerwiegenden Konsequenzen kommen . .

3 Kategorien

  • Zeitleiste
    Sortieren Sie nach dem Zeitpunkt der Veröffentlichung. Die zuerst geposteten werden zuerst angezeigt, und die später geposteten werden oben angeordnet, ähnlich wie bei WeChat Moments, Weibo usw. Dies ist auch die häufigste Form. Wenn das Produkt den Timeline-Typ wählt, bedeutet dies, dass der Feed-Stream nicht viele Feeds enthält, aber jeder Feed wichtig ist und von Benutzern gesehen werden muss.
  • Rangfolge
    Sortieren Sie nach einem nicht zeitlichen Faktor, normalerweise nach den Vorlieben des Benutzers. Der Favorit des Benutzers wird an erster Stelle und der zweite Favorit an letzter Stelle angezeigt. Dies setzt im Allgemeinen voraus, dass der Benutzer möglicherweise viele Feeds sieht und die Zeit, die der Benutzer hier verbringt, begrenzt ist. Anschließend werden die Top-N-Ergebnisse für den Benutzer ausgewählt. Zu den Anwendungsszenarien gehören das Teilen von Bildern und Nachrichtenempfehlungen Kategorien und Produktkategorien usw.

4 Schwierigkeiten

4.1 Speicher

Da der Feed in diesem Projekt relativ einfach ist, kann MySQL-Speicher verwendet werden, wenn der Feed-Stream eine komplexe Datenstruktur hat, muss eine NoSQL-Datenbank verwendet werden verwendet werden, was die Speicherung komfortabler und effizienter macht, wie zum Beispiel MongoDB oder HBase.

4.2 Push

Im Push-Plan gibt es drei Pläne, nämlich:

Pull-Modus

Auch als Lesediffusion bekannt, ziehen Benutzer aktiv den Feed-Inhalt ihrer Follower.
Das heißt, wenn ein Benutzer (insbesondere jemand, der vielen Leuten folgt) ein Verhalten auslöst, ziehen Sie seine eigenen Updates, rufen Sie die Follow-Liste des Benutzers ab und rufen Sie dann neue Feeds basierend auf der Follow-Liste ab. Wenn ein Benutzer zu vielen Personen folgt, ist die Abfrage der Beobachtungsliste des Benutzers ebenfalls mit hohen Datenkosten verbunden.

Push-Modus

wird auch zur Schreibdiffusion. Wenn ein Benutzer einen Feed hinzufügt, wird der Feed automatisch an die Personen benachrichtigt, denen er folgt (bevorzugt).
Das heißt, wenn ein Benutzer ein Verhalten auslöst (z. B. das Posten auf Weibo), wird sein Verhalten in der Verhaltenstabelle aufgezeichnet und sie entspricht auch der Fans-Tabelle des Benutzers, wobei für jeden Fan ein Feed eingefügt wird. Bei großen Vs mit über 10.000 Fans ist das Einfügen eines Feeds für jeden Fan jedoch sehr aufwändig, um Daten zu speichern.

Verwenden Sie Redis Sorted Sets (praktisch, um die Zeitleiste nach Zeit zu sortieren), um die Feed-Sammlung der Fans zu verwalten. Wenn der Blogger einen Feed hinzufügt, wird der Inhalt aktiv an die Feed-Sammlung der Fans weitergeleitet, sodass Benutzer ihn einfach und schnell verwalten können Lesen Sie schnell aus der Sammlung.

Push- und Pull-Kombination

Bei Weibo haben die meisten Benutzer Hunderte von Kontobeziehungen, aber einige Benutzer verwenden es nur, wenn sie mehr als 10 Millionen haben.

Online pushen, offline ziehen

  • Wenn Big V Updates veröffentlicht, werden diese nur an Fans gesendet, die gleichzeitig online sind. Offline-Fans ziehen die Updates, nachdem sie online sind. um das Drücken und Ziehen abzuschließen.

Regelmäßiger Push, Offline-Pull

Nachdem das große V das Update veröffentlicht hat, wird es regelmäßig in Form eines residenten Prozesses an die Fan-Update-Tabelle gesendet.

5 Tischdesign


Empfohlen (kostenlos): Redis-Tutorial

Das obige ist der detaillierte Inhalt vonWie Redis den Feedflow implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen