Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Wie kombinieren Sie die sortierten Sets Redis?

Es gibt ein paar Möglichkeiten, dies zu tun, aber die richtige hängt davon ab, was Sie versuchen zu tun. Zum Beispiel:

  1. Sie können ZRANGEBYSCORE (oder ZREVRANGEBYSCORE) in Ihrem Code für jeden FEED:USER:n verwenden key und die Antworten im Client "zusammenführen"
  2. Sie können einen ZUNIONSTORE mit den relevanten Schlüsseln durchführen und dann den ZRANGEBYSCORE mit dem Ergebnis des Clients.
  3. Wenn Ihre "Feeds" jedoch groß sind, sollte der Fluss von #2 umgekehrt werden - zuerst Range und dann Union.
  4. Sie könnten ähnliche Arten der Verarbeitung auch vollständig serverseitig mit etwas Lua-Skripting durchführen.

EDIT:weitere Erläuterungen

Betreff. 1 - Das Zusammenführen kann clientseitig mit den Ergebnissen erfolgen, die Sie von ZRANGEBYSCORE erhalten, oder Sie können serverseitige Lua-Skripte verwenden, um dies zu tun. Verwenden Sie die WITHSCORES, um den Zeitstempel zu erhalten und ihn zusammenzuführen/zu sortieren. Unabhängig von der Wahl des Speicherorts für die Ausführung dieses Codes (ich würde wahrscheinlich Lua für die Datenlokalität verwenden), liegt die Implementierung bei Ihnen - lmk, wenn Sie dabei Hilfe benötigen :)