Ponieważ heshes Redis pozwala na przechowywanie ogromnych ilości par wartości pola, iteracja nad tego typu kolekcji musi być również ułatwiona. Tak więc incrementalowa iteracja oparta na kursorach została zaimplementowana za pomocą polecenia HSCAN. W tym przewodniku skupimy się bardziej na poleceniu HSCAN i jej przypadkach użycia.
Polecenie HSCAN
Komenda HSCAN służy do iteracji pola i wartości haszu Redis przechowywanego w danym kluczu. Nie blokuje serwera jak klawisze lub polecenia SMEMBERS. Zamiast tego HSCan zwraca część elementów w każdej iteracji z O (1) stałą złożonością czasu. Jedyną wadą tego zachowania jest to, że polecenie HSCan ma ograniczoną gwarancję zwróconych elementów skrótów w danym momencie, ponieważ skrót może zostać zmieniony podczas iteracji. Nie jest tak w przypadku blokowania poleceń takich jak smembers, które gwarantują, że wszystkie elementy zostaną zwrócone w danym momencie.
Składnia
Polecenie HSCAN pochodzi z polecenia skanowania. Stąd polecenie HSCAN ma prawie tę samą składnię jak skanowanie, z wyjątkiem tego, że polecenie skanowania nie wymaga klucz Jako pierwszy argument, ponieważ iteruje go w klawiszach przechowywanych w bieżącej bazie danych Redis.
HSCAN HASH_KEY KURSOR [MATH WIDZO] [Count_per_iteration]HASH_KEY: Klucz skrótu.
Kursor: Wartość kursora zaczyna się od 0, a kończy na 0, jeśli pełna iteracja została zakończona.
MECZ: Wzór dopasowany podczas pobierania elementów w każdej iteracji. Tylko dopasowane elementy zostaną zwrócone klientowi.
LICZYĆ: Liczba elementów, które zostaną zwrócone w każdej iteracji.
Zwrócony zestaw wyników na iterację zawiera kilka elementów. Pierwszy to 64-bitowa liczba całkowita, która reprezentuje kursor, który ma zostać przekazany do następnego połączenia. Oprócz tego zwróci się szereg par pola skrótu.
Przypadek użycia 01: Uzyskaj wszystkie informacje pracownika
Załóżmy, że firma musi zachować dane pracownika w magazynie danych o ograniczonym zużyciu pamięci. Tak więc skrót Redis jest idealną strukturą danych do użycia w tym przypadku, ponieważ będziemy reprezentować rzeczywiste obiekty pracowników o ich właściwościach.
Najpierw stworzymy haszę Redis CompanyAempdetails: 1002 z niektórymi parami wartości w terenie w następujący sposób. Polecenie HMSET można użyć do dodania wielu par wartości pola do skrótu.
HMSET CompanyAmpdetails: 1002 Empid 1002 Empname „Jack Anwar” Empsalary 40000 $ Empaddress „23/4, Redis Avenue, NYC„ Empcontact +9569492022 Empage 45 empblood o + empvehicle mercedez EmpDeSignation ”Iternujmy obiekt pracownika i pobierajmy wszystkie informacje za pomocą polecenia HSCAN w następujący sposób. Musimy zacząć od kursora 0.
HSCAN COMPANYAMPDETAILS: 1002 0Wyjście
Wartość kursora wynosi 0 w zwróconym zestawie wyników, co oznacza, że wszystkie elementy zostały zwrócone przez pierwszą iterację. Ponieważ liczba elementów jest niewielka, skróty Redis reprezentują te elementy za pomocą kodowania z pakowanym pojedynczym alokacją. Dlatego do momentu spełnienia maksymalnego rozmiaru opakowania lub liczby elementów polecenie zwróci wszystkie elementy w skrócie. Jeśli argument liczby zostanie określony, zostanie on zignorowany w takim przypadku. Nazywa się to pełną iteracją, ponieważ pod koniec pierwszej iteracji otrzymaliśmy wszystkie dziewięć elementów. Gdybyśmy mieli dziesiątki par wartości pola, byłyby one reprezentowane jako tabela skrótu w pamięci. Zwrócenie wszystkich elementów zajęłoby kilka iteracji.
Przypadek użycia 02: Uzyskaj liczbę gości dla stron internetowych, których domena najwyższego poziomu to „.com ”
Komenda HSCAN może być używana do odfiltrowania zwróconych elementów na podstawie dopasowania wzoru. Należy przekazać argument meczu.
Załóżmy, że firma musi śledzić liczbę gości dla swoich stron internetowych. Możemy stworzyć hash abccompany: odwiedzający i dodać elementy w następujący sposób.
Hmset Abccompany: odwiedzający „www.ABC.ja „200000” www.HTRS.com „123000” www.Kdkdk.com „560000” www.QPSPS.LK „120000” www.Dioso.com "90000Możemy użyć polecenia HGETALL, aby sprawdzić, jak wygląda skrót.
HGETALL ABCCOMPANY: OdwiedzającyTeraz firma ma wymóg iterację tego skrótu i odzyskiwania odwiedzających liczy się na strony internetowe za pomocą ".com ” domena najwyższego poziomu. Przekażmy argument mecz do polecenia HSCAN w następujący sposób.
HSCAN ABCCOMPANY: odwiedzający 0 mecz *.com*Powinno to idealnie zwrócić trzech członków na pięciu członków, jak pokazano następująco.
Wniosek
Podsumowując, polecenie HSCAN jest używane do iterowania nad kolekcją par pola skrótu w zakresie wartości pola. To polecenie pochodzi z polecenia skanowania nadrzędnego, ale z niewielką zmianą w pierwszym argumencie, który został przekazany, gdy Hscan przyjmuje klucz skrótu jako pierwszy argument. Jak omówiono w przypadkach użycia, polecenie HSCAN może być używane na różne sposoby, określając argumenty dopasowania i zliczania, w których można pobrać elementy pasujące do określonego wzorca i ograniczyć liczbę zwróconych elementów na iterację. Ogólnie polecenie HSCAN może być przydatne podczas pobierania elementów z kolekcji bez blokowania serwera lub klienta.