Zapytanie elementów sortowanych z sortowanymi redis
Zestawy sortowane w Redis są zupełnie inne od normalnych zestawów. Mimo że oba typy zestawu przechowują unikalnych członków w środku, sortowane zestawy umieszczają elementy w uporządkowany sposób. Główne właściwości zestawu sortowanego Redis to:
Stąd członkowie zestawu sortowanego Redis można pobrać na podstawie wielu miar, takich jak wynik, ranga (wskaźnik) i leksykograficzny. ZrangeByscore i Zrange to dwa główne polecenia zestawu sortowanego Redis, które można użyć do iteracji nad elementami na podstawie wcześniej określonych środków. W tym przewodniku skupimy się na poleceniu ZrangeByscore, które służy do zapytania członków według zakresu wartości wyników.
Polecenie ZrangeByscore
Ponieważ polecenie ZrangeByscore ma logarytmiczną złożoność czasu, jest bardzo szybka w odzyskaniu posortowanych elementów. Ponadto opcje poleceń, takie jak limit, skracają czas pobierania o znaczną ilość. Dlatego polecenie ZrangeByscore można bezpiecznie używać w aplikacjach w czasie rzeczywistym o niskim opóźnieniu, takim jak tabele liderów online, kolejki priorytetowe i indeksowanie wtórne ogólnie.
Składnia:
ZrangeByscore sorted_set_key minimum_score Maximum_Score [withscores] [Limit offset liczba przesunięcia]
sorted_set_key: Jest to unikalny identyfikator, w którym sortowany zestaw jest przechowywany.
minimum_score: Dolna wartość wyniku granicznego określonego zakresu.
Maximum_scormi: Wyższa wartość wyniku granicznego określonego zakresu.
Zscores: Ten opcjonalny argument zwraca wynik każdego elementu.
LIMIT: Ten opcjonalny argument można użyć do ograniczenia liczby elementów powracających z określonej pozycji sortowanego zestawu.
Polecenie ZrangeByscore zwraca posortowane elementy zestawu między określonymi minimum_score I Maximum_Score Wyniki. Członkowie ci są zwracani w kolejności rosnącej na podstawie wartości wyników. Jeśli wielu członków ma takie same wyniki, polecenie śledzi kolejność leksykograficzną.
Przykład: tabela liderów gry online oparta na doświadczeniu gracza
Załóżmy, że jest to gra online, w której każdy gracz może zdobyć punkty doświadczenia po ukończeniu misji, odkrywania zadań i pokonania wrogów. Ponieważ zestawy sortowane w Redis są responsywne, a struktury danych w pamięci, w których członkowie są zamawiani na podstawie wyniku, mogą być używane do przechowywania szczegółów odtwarzacza. Z kolei informacje można zwrócić z niskim opóźnieniem.
Jak pokazano na poprzedniej ilustracji, informacje odtwarzacza można dodać do zestawu sortowanego Redis i mogą manipulować później w razie potrzeby.
Dodajmy czterech graczy pokazanych na poprzedniej ilustracji. Udało nam się utworzyć komendę Zadd i dodać szczegóły odtwarzacza do sortowanego zestawu ”tablica wyników: XP".
tablica liderów Zadd: XP 1500 Player: 01
tablica liderów Zadd: XP 2500 Player: 02
tablica liderów Zadd: XP 1000 Player: 03
tablica liderów Zadd: XP 3500 Player: 04
Zapytaj wszystkich graczy na tablicy liderów gry
Możemy użyć polecenia ZrangeByscore, aby pobrać wszystkich graczy na tablicy liderów gry, jak pokazano następujące. Minimalne i maksymalne wartości wyników są określone jako 1000 i 3500. Możemy użyć -Inf I +Inf Wartości, jeśli nie jesteśmy pewni o najniższych i najwyższych wartościach wyników:
ZrangeByscore Liderboard: XP 1000 3500
LUB
ZrangeByscore Liderboard: XP -inf +Inf
Wszyscy członkowie są zwracani jak przy następujących wyjściach:
Wyjście jest sortowane w kolejności rosnącej według wartości wyników.
Wyklucz wartości minimum_score lub maksimum_score
W poprzednim przykładzie wartości wyników MIN i MAX są obejmujące zakres. Możemy wykluczyć wartości wyników MIN i MAX z zakresu, poprzedzając ocenę „(” (”, jak pokazano następująco:
ZrangeByscore Liderboard: XP (1000 (3500
Jak pokazano przy następujących wyjściach, wyjście wyklucza członków, których wyniki wynoszą 1000 i 3500.
Wyświetl zarówno wartości członka, jak i wyniku
Możemy użyć opcjonalnego argumentu z scores z poleceniem ZrangeByscore, aby wyświetlić wartości wyników na członek.
ZrangeByscore Liderboard: XP -inf +Inf withsores
Wyjście:
Ogranicz liczbę zwróconych członków
W niektórych scenariuszach musimy ograniczyć liczbę zwróconych członków na połączenie. Powiedzmy, że musimy zdobyć 2 najlepszych członków, których wartości doświadczenia (wynik) są najniższe. Możemy użyć argumentu limitu z liczbą 2 i przesunięcia 0. Przesunięcie to ranga na członka.
ZrangeByscore Liderboard: XP -inf +Inf Limit 0 2
Zwraca to 2 najlepszych członków, których wyniki są najniższe.
Możesz również użyć argumentu limitu z argumentem ze scores.
Polecenie Zrange zamiast Zrangbyscore
Z Redis 6.2.0 wersja, polecenie ZrangeByscore jest przestarzałe. Dlatego możemy użyć polecenia Zrange, które zachowuje się tak samo jak polecenie Zragnebyscore, gdy jest używane z opcjonalnym argumentem BYSCORE.
Wniosek
Podsumowując, polecenie ZrangeByscore służy do zapytania o elementy między określonymi wartościami minimum i maksymal. Jak wspomniano, to polecenie ma logarytmiczną złożoność czasu, którą można użyć do iteracji nad zestawem członków o niskim opóźnieniu. Obsługuje także kilka opcjonalnych argumentów, limitów i ze scores, które ograniczają liczbę zwróconych członków i wyświetla obie pary wartości wyniku członka.