Da Redis-Hashes es Ihnen ermöglicht, große Mengen an Feldwertpaaren zu speichern, muss auch die Iteration über diese Art von Sammlung erleichtert werden. Daher wurde die inkrementelle Iteration von Cursor mit dem HSCAN-Befehl implementiert. In diesem Leitfaden konzentrieren wir uns mehr auf den HSCAN -Befehl und seine Anwendungsfälle.
Der HSCAN -Befehl
Der Befehl hscan wird verwendet, um über die Felder und Werte eines Redis -Hashs zu iterieren, der in einem bestimmten Schlüssel gespeichert ist. Es blockiert den Server nicht wie Schlüssel oder Smembers -Befehle. Stattdessen gibt der HSCAN einen Teil der Elemente in jeder Iteration mit einer o (1) konstanten Zeitkomplexität zurück. Der einzige Nachteil dieses Verhaltens ist, dass der HSCAN -Befehl eine begrenzte Garantie für die zurückgegebenen Hash -Elemente zu einem bestimmten Zeitpunkt hat, da der Hash während der Iterationen geändert werden kann. Es ist nicht der Fall bei Blockierungsbefehlen wie Smembers, die garantieren, dass alle Elemente zu einem bestimmten Zeitpunkt zurückgegeben werden.
Syntax
Der Befehl hscan leitet sich aus dem Scan -Befehl ab. Daher hat der Befehl hscan fast die gleiche Syntax wie der Scan, außer dass für den Scan -Befehl keine erforderlich ist Taste Als erstes Argument, weil es über die in der aktuellen Redis -Datenbank gespeicherten Schlüssel iteriert.
HSCAN Hash_Key Cursor [Matchmuster] [count count_per_iteration]Hash_Key: Der Schlüssel des Hashs.
Mauszeiger: Der Cursorwert beginnt bei 0 und endet bei 0, wenn eine vollständige Iteration abgeschlossen wurde.
PASSEN: Ein Muster, das beim Abrufen von Elementen in jeder Iteration übereinstimmt. Nur die übereinstimmenden Elemente werden an den Kunden zurückgegeben.
ZÄHLEN: Die Anzahl der Elemente, die in jeder Iteration zurückgegeben werden.
Das zurückgegebene Ergebnis -Set pro Iteration enthält ein paar Elemente. Der erste ist eine 64-Bit-Ganzzahl, die den Cursor darstellt, der in den nächsten Anruf weitergegeben wird. Abgesehen davon wird eine Reihe von Hash-Feldwertpaaren zurückgegeben.
Anwendung Fall 01: Holen Sie sich alle Informationen eines Mitarbeiter
Nehmen wir an, dass ein Unternehmen seine Mitarbeiterdetails in einem Datenspeicher mit begrenztem Speicherverbrauch aufrechterhalten muss. Der Redis-Hash ist also die ideale Datenstruktur, die in diesem Fall verwendet werden kann, da wir reale Mitarbeiterobjekte mit ihren Eigenschaften darstellen werden.
Erstens werden wir einen Redis -Hash erstellen FirmaaEMPDetails: 1002 mit einigen Feldwertpaaren wie folgt. Mit dem Befehl HMSET kann ein Hash mehrere Feldwertpaare hinzugefügt werden.
HMSET CompanyAMPDetails: 1002 Empid 1002 Empname "Jack Anwar" Empsalary $ 40000 Empaddress "23/4, REDIS Avenue, NYC" Empcontact +9569492022 Empage 45 Empblod O + Empvehicle Mercedez EMPDESIGNATION "Lead Engineer" "Lead Engineer" "Lead Engineer"Lassen Sie uns über das Mitarbeiterobjekt iterieren und alle Informationen mit dem Befehl hscan wie folgt abrufen. Wir müssen von Cursor 0 beginnen.
Hscan CompanyAemperdetails: 1002 0Ausgang
Der Cursorwert beträgt 0 im zurückgegebenen Ergebnissatz, was bedeutet, dass alle Elemente durch die erste Iteration zurückgegeben wurden. Da die Anzahl der Elemente klein ist, repräsentieren Redis-Hashes diese Elemente anhand einer einzelnenverpackten Codierung. Daher gibt der Befehl alle Elemente im Hash zurück, bis eine maximale Packgröße oder Anzahl der Elemente erfüllt ist. Wenn das Zählargument angegeben ist, wird es in diesem Fall ignoriert. Dies wird als vollständige Iteration bezeichnet, weil wir am Ende der ersten Iteration alle neun Elemente erhalten haben. Wenn wir zehn Feldwertpaare hätten, würden sie als Hash-Tabelle im Speicher dargestellt. Es würde also mehrere Iterationen dauern, um alle Elemente zurückzugeben.
Anwendungsfall 02: Besucherzahl für Websites erhalten, deren Domain der obersten Ebene ist.com ”
Der Befehl hscan kann verwendet werden, um die zurückgegebenen Elemente basierend auf einer Musterübereinstimmung herauszufiltern. Ein Match -Argument sollte übergeben werden.
Nehmen wir an, ein Unternehmen muss den Besucher für seine Websites verfolgen. Wir können einen Hash -AbccPany: Besucher erstellen und Elemente wie folgt hinzufügen.
hmset Abccompany: Besucher "www.ABC.Ich "200000" www.HTRs.com "123000" www.kdkdk.com "560000" www.QPSPs.lk "120000" www.Dioso.com "90000Wir können den Befehl hGetall verwenden, um zu überprüfen, wie der Hash aussieht.
HGetall Abccompany: BesucherJetzt hat das Unternehmen die Voraussetzung, diesen Hash zu iterieren und die Besucherzahlen für Websites mit dem abzurufen “.com ” Top-Level-Domain. Lassen Sie uns das Match -Argument wie folgt an den Befehl hscan übergeben.
Hscan Abccompany: Besucher 0 Match *.com*Dies sollte idealerweise drei Mitglieder von fünf Mitgliedern zurückgeben, wie im Folgenden gezeigt.
Abschluss
Zusammenfassend wird der HSCAN-Befehl verwendet, um eine Sammlung von Hash-Feldwertpaaren zu iterieren. Dieser Befehl wird aus dem Befehl übergeordneter Scan abgeleitet, jedoch mit einer leichten Änderung des ersten Arguments, an dem HSCAN den Hash -Schlüssel als erstes Argument nimmt. Wie in den Anwendungsfällen erläutert, kann der Befehl hscan auf unterschiedliche Weise verwendet werden. Insgesamt kann der HSCAN -Befehl nützlich sein, wenn Elemente aus einer Sammlung abgerufen werden, ohne den Server oder Client zu blockieren.