Polecenie Redis Sscan

Polecenie Redis Sscan
Redis to sklep z kluczową wartością, który zawiera kilka wbudowanych typów danych. Zawiera także typy kolekcji, takie jak zestawy, skróty i sortowane zestawy. Ilekroć masz typy kolekcji, należy mieć metodę zapętlania elementów kolekcji. Zwykle w kontekście programowania używamy w tym celu iteratorów.

Redis obsługuje iteratory oparte na kursorach. Te iteratory mogą stopniowo zapętlać przez kolekcję i zwrócić ograniczoną liczbę elementów. Jednocześnie zwraca zaktualizowany indeks/identyfikator kursora jako liczbę całkowitą do użycia w następnej iteracji. Kursor to wskaźnik utrzymywany przez iterator, aby zachować nową lokalizację po każdej iteracji.

Iterator skanowania

Polecenie skanowania jest podstawą wielu innych iteratorów Redis. Ten iterator nie gwarantuje liczby zwróconych w każdej pętli. Może zwrócić 0 elementów lub wszystkie elementy w danej iteracji. Może także wytworzyć ten sam element wiele razy, ponieważ kolekcja może się zmienić, co jest wadą w iteratoru skanowania. Polecenie skanowania zwraca dwie wartości w każdym wykonaniu. Pierwsza wartość to identyfikator odniesienia do kursora, a druga wartość to zbiór elementów. Zawsze zaczyna się od kursora 0. Kilka innych iteratorów pochodzi z iteratora skanowania, takich jak SSCAN, HSCAN i ZSCAN. Polecenia te mają takie samo zachowanie, ale działają na różnych typach kolekcji.

Pełna iteracja

Ponieważ polecenie skanowania nie gwarantuje liczby zwróconych w każdej iteracji, jedynym sposobem na powiadomienie, że iterator został zapętlony przez cały kolek. Jeśli zwrócony kursor wynosi 0, wskazuje, że wszystkie elementy zostały iterowane. Nazywa się to pełną iteracją.

Polecenie sscan

Iterator Sscan pochodzi z iteratora skanowania. Stąd wszystkie zachowania są rozszerzone z polecenia skanowania, ale tylko itera to typy zestawu.

Składnia

SSCAN SET_KEY CURSOR [Match Wzór] [Count Count]

set_key: To jest klucz zestawu.

kursor: Identyfikator referencyjny następującego kursora, który jest zwracany po każdym połączeniu.

Dopasowanie i liczba to dwa opcjonalne parametry, których można użyć do odfiltrowania zwróconych elementów na podstawie danego wzoru i ograniczenia liczby zwróconych elementów.

To polecenie zwróci następny kursor i szereg elementów. Zwracany identyfikator kursora może zostać przekazany do polecenia SSCAN w następnym połączeniu.

Przykład 1: Iternuj nad małym zestawem

Utwórzmy zestaw Redis za pomocą polecenia Sadd.

sadd setofcolors czerwony zielony czarny biały niebieski różowy szary pomarańczowy fioletowy żółty żółty

Poprzednie polecenie utworzy nowy zestaw setofcolors i dodaj 10 członków w sposób nieuporządkowany. Możemy użyć polecenia Smembers, aby zweryfikować poprzednią operację.

Setofcolors Sembers

Zgodnie z oczekiwaniami zestaw setofcolors został pomyślnie stworzony.

Możemy użyć polecenia sscan, aby iterować setofcolors Ustaw, jak pokazano następująco:

Sscan Setofcolors 0

Jak wspomniano, polecenie powinno zacząć od kursora 0. Klucz zestawu również został przekazany. Od setofcolors zawiera tylko 10 członków, polecenie SSCAN może zwrócić wszystkie elementy w pierwszej iteracji. Ponieważ setofcolors jest stosunkowo małym zestawem.

Wyjście

Jak omówiono, polecenie zwróciło dwie wartości, ponieważ pierwsza to 0. Oznacza to, że powyższe jest pełną iteracją. Nie trzeba ponownie dzwonić do Sscan. Wszyscy dziesięciu członków zostały zwrócone jako druga wartość zwracana tego polecenia.

Przykład 2: Iternuj nad dużym zestawem

Będziemy tworzyć zestaw z ponad 20 członkami.

sadd alfabet a b c d e f g h i j k l m n o p q r s t u v x y z

Iternujmy nad alfabet ustawić.

Sscan Alphabet 0

Jak zwykle zaczęliśmy od kursora 0. Ponadto klucz ustawiony został przekazany jako alfabet. Zwrócił tylko 11 członków z pierwszej iteracji, jak pokazano następująco:

Następny kursor to 6. Zadzwońmy ponownie do polecenia SSCAN z odpowiednimi argumentami.

Teraz zwrócił kolejne 10 członków, a następny kursor na 13. Musimy ponownie zadzwonić do polecenia sscan, aby zakończyć pełną iterację.

Zwrócona wartość kursora wynosi 0, co oznacza, że ​​iterator iterował przez cały zestaw.

Przykład 3: dopasowanie wzoru do Sscan

Możemy użyć parametru dopasowania, aby odfiltrować zwrócone elementy na podstawie określonego wzoru. Utwórzmy nowy zestaw o nazwie Nazwy użytkowników z niektórymi członkami.

Sadd Usernames John Norek Pinku Juwana Jorgia Noton Derek Desman Julia Jumini Piter Pinso Demian

Nazwimy polecenie SSCAN z argumentem meczu, aby pobrać wszystkie nazwy użytkowników, zaczynając od „JU”.

Sscan Nazwy użytkowników 0 Match Ju*

Wyjście

Mamy trzy nazwy użytkowników, zaczynając od „JU” w planie. Ale zwrócił tylko jeden w tej iteracji. Dlatego musimy ponownie wywołać polecenie sscan z zaktualizowanym kursorem.

Sscan Nazwy użytkowników 7 Match Ju*

Wyjście

Iterator zapętczył wszystkie elementy w planie i mamy trzech członków pasujących do naszego wzoru.

Przykład 4: Ogranicz liczbę elementów na połączenie

Polecenie Redis Sscan powraca domyślnie około dziesięciu elementów na połączenie, ale możesz wyraźnie określić liczbę elementów, które należy zwrócić na połączenie. Które mogą zapewnić znaczne zwiększenie wydajności aplikacji.

Użyjmy poprzedniego zestawu i ogranicz liczbę zwróconych elementów na połączenie do trzech. Zwykle zwrócona liczba elementów zmienia się na około 3. Możemy określić wartość argumentu liczby, aby osiągnąć to zachowanie.

Sscan Nazwy użytkowników 0 Count 3

Wyjście

Zwykle zwraca około 10 członków, ale teraz to tylko 4 elementy. To samo stało się z następującymi połączeniami.

Sscan Nazwy użytkowników 6 Count 3
Sscan Nazwy użytkowników 1 liczba 3
Sscan Nazwy użytkowników 7 Count 3

Jest to bardzo przydatne, gdy masz do czynienia z dużymi zestawami.

Wniosek

Redis zawiera kilka rodzajów kolekcji, takich jak zestawy, skróty i sortowane zestawy. Zwykle iteratory mogą być używane do zapętlania typów kolekcji. Iterator skanowania służy do iteracji klawiszy w bazie danych Redis. Jest to iterator oparty na kursorze, który zwraca dwie wartości na wezwanie, gdzie pierwszy to zaktualizowany kursor, a drugi to tablica elementów. Polecenie SSCAN ma takie same zachowania jak polecenie skanowania, ale jest specyficzne dla ustawiania typów. Może również skanować zestaw oparty na wzorze. Również polecenie jest w stanie ograniczyć liczbę zwróconych elementów na wezwanie.