Redis Zdiff

Redis Zdiff

Einführung zum festgelegten Unterschied

Der festgelegte Unterschied ist einer der grundlegenden Set -Operationen, die zusammen mit den beiden anderen festgelegten Operations Union und Kreuzung immer auf der Liste stehen,. Darüber hinaus erzeugt der Unterschied zwischen einer bestimmten zwei Sätzen einen weiteren Satz. Betrachten Sie die beiden Sätze A und B in der folgenden Abbildung:

A = "Jack", "Daniel", "Mary"
B = "Daniel", "Nick", "Mary", "Ricky"

Der festgelegte Differenz A-B kann wie folgt geschrieben werden:

A-b = "Jack", "Daniel", "Mary" - "Daniel", "Nick", "Mary", "Ricky"

Da die Gegenstände „Daniel“ und „Mary“ in beiden Sätzen vorhanden sind, werden diese ignoriert, wenn der festgelegte Differenz A-B nimmt. Daher lautet der festgelegte Differenz A-B wie folgt:

A-B = "Jack"

Es muss nicht sein, dass A-B und B-A gleich sind. Betrachten wir den festgelegten Unterschied B-A:

B = "Daniel", "Nick", "Mary", "Ricky"
A = "Jack", "Daniel", "Mary"

B-A = "Daniel", "Nick", "Maria", "Ricky" - "Jack", "Daniel", "Mary"

B-A = "Nick", "Ricky"

Der festgelegte Unterschied kann mit einem Venn -Diagramm auf einfachere Weise wie folgt visualisiert werden:

Der Zdiff -Kommando

Redis sortierte Sets unterstützen die festgelegten Operationen wie die Set Union, die Kreuzung und den Unterschied. In diesem Leitfaden konzentrieren wir uns auf den Befehl ZDIFF, der verwendet wird, um den sortierten Set -Differenz zu erzeugen. Der Befehl zdiff gibt ein weiteres sortiertes aus den bereitgestellten sortierten Sätzen zurück.

Syntax:

Der ZDIFF -Befehl verfügt über eine einfache Syntax, bei der es obligatorisch ist, die Anzahl der Schlüssel als erstes Argument anzugeben, wie im Folgenden gezeigt:

Zdiff number_of_keys Schlüssel [Schlüssel…] [With Scores]


number_of_keys: Die Anzahl der Schlüssel der angegebenen Sortiersätze.

Taste: Ein Schlüssel des angegebenen Sortiertensatzes.

With Scores: Dies ist ein optionaler Parameter. Wenn dieses Argument angegeben ist, werden die Bewertungen der zurückgegebenen festgelegten Elemente angezeigt.

Dieser Befehl gibt einen sortierten Satz zurück, der die Differenz zwischen den bereitgestellten sortierten Sätzen ist. Die Elementwerte werden angezeigt, wenn die Mit Erkenntnissen Argument wird verabschiedet.

Anwendungsfall 1: Suchen Sie Benutzer, die Veganer sind

Nehmen wir an, dass ein Restaurant zwei Listen verwaltet, in denen eine die Personen, die Gemüse bestellen. Jetzt wollen sie die Veganer identifizieren und an ihrem Geburtstag ein vegetarisches Essen schicken. In diesem Szenario kann die Datenstruktur mit Redis -Sortierter Daten verwendet werden.

Zuerst erstellen wir ein Set, um die Personen zu lagern, die Gemüsegerichte bestellt haben.

Zadd Vegiconsumers 10 Jack
Zadd Vegiconsumers 5 Mary
Zadd Vegiconsumers 13 Ricky


Der Bewertungswert wird als durchschnittliche Anzahl der Mahlzeiten pro Monat verwendet. Als nächstes erstellen wir ein anderes sortiertes Set mit dem Namen Fleischverbraucher.

Zadd Meatconsumers 22 Henrick
Zadd Meatconsumers 12 Mary
Zadd Meatconsumers 5 Ricky


Überprüfen wir die Mitglieder beider sortierten Sets mit dem Befehl ZRange.

Zrange Vegiconsumers 0 5
Zrange Meatconsumers 0 5


Ausgang:


Wie erwartet sind beide Sätze zuvor mit den angegebenen Mitgliedern bevölkert. Da das Managementteam des Restaurants die Veganer abfragen muss, sollten wir den festgelegten Unterschied zwischen bevölkern Vegiconsumers Und Fleischverbraucher. Der folgende Befehl bevölkert ein sortiertes Set, das aus Benutzern besteht, die nur die Gemüsemahlzeiten bestellt haben.

Zdiff 2 Vegiconsumers Meatconsumers


Da wir den festgelegten Unterschied zwischen zwei Sätzen nehmen, ist das erste Argument auf 2 gesetzt. Dann geben wir die Schlüssel der beiden Sätze an.

Wir können den vorherigen Befehl ändern, um den Bewertungswert des zurückgegebenen Mitglieds anzuzeigen.

Zdiff 2 Vegiconsumers Meatconsumers With Scores


Ausgang:


Wie erwartet der festgelegte Unterschied zwischen den Vegiconsumers Und Fleischverbraucher Erzeugt ein sortiertes Set mit einem Mitglied, wie im Folgenden gezeigt:

Vegiconsumers = Mary, Jack, Ricky

Fleischversuche = Ricky, Mary, Henrick

Vegiconsumers - Meatconsumers = Mary, Jack, Ricky - Ricky, Mary, Henrick = Jack

Daher ist der einzige vegane Kunde „Jack“.

Anwendungsfall 2: Suchen Sie Nutzer, die Nicht-Veganer sind

In ähnlicher Weise kann das Restaurantmanagement die Nicht-Veganer-Kunden abfragen. In diesem Fall sollte der festgelegte Unterschied wie folgt sein:

Fleischversuche - Vegiconsumers

Verwenden wir den Befehl ZDIFF diesmal mit geringfügiger Änderung.

Zdiff 2 Meatconsumers Vegiconsumers With Scores


Ausgang:


Wie erwartet ist das Mitglied „Henry“ der einzige Kunde, der nur Mahlzeiten mit Fleisch bestellt hat, ohne Gemüsemahlzeit zu bestellen.

Abschluss

Kurzer. Der Befehl ZDIFF wird verwendet, um die Differenz zwischen zwei Sätzen zu erzeugen. Wie bereits erwähnt, gibt dieser Befehl ein weiteres sortiertes Set zurück, das aus den Mitgliedern besteht, die nur zum ersten Sortierten -Set gehören. Wie in den vorherigen Anwendungsfällen gezeigt, ist es obligatorisch, die Anzahl der Schlüssel als erstes Argument für diesen Befehl anzugeben. Insgesamt hat der ZDIFF -Befehl fast logarithmische Zeitkomplexität, die effizient in Anwendungen mit niedriger Latenz verwendet werden kann.