Redis Zcount

Redis Zcount

Redis Sorted Set Ocena i ranga

Zestawy sortowane Redis to uporządkowany wariant typowej struktury danych. Każdy sortowany element zestawu jest powiązany z dwoma specjalnymi właściwościami: rangą i wynikiem. Wartość wyniku służy do zamówienia posortowanych elementów ustawionych w kolejności rosnącej. Ponadto wyniki można powtórzyć, podczas gdy członkowie muszą być unikalne dla danego zestawu. Ponieważ uporządkowane są sortowane elementy ustawione, operacje dodawania, aktualizacji i usuwania są szybsze. Ponadto ta struktura danych umożliwia zapytanie o elementy w zakresie według wyniku lub wartości rankingu z doskonałą wydajnością.

Jak pokazano na poprzedniej ilustracji, większość głównych poleceń działających na zestawach redis ma złożoność czasu O (log (n)), która jest szybsza.

Polecenie ZCount

Polecenie ZCount służy do zapytania o zakres zestawu między określonymi wynikami. Zwrócone elementy są sortowane od najniższego do najwyższego wyniku. Ilekroć wiele elementów utrzymuje te same wyniki, są one uporządkowane według kolejności leksykograficznej. To polecenie ma również złożoność czasu O (log (n)), ponieważ używa właściwości rangi podczas zapytania o zakres elementów. Stąd brak liniowej związku z liczbą elementów podczas pomiaru czasu wykonywania.

Poniżej znajduje się składnia polecenia ZCount:

Składnia:

ZCount set_key minimum_score maximum_score

set_key: Klucz zestawu sortowanego Redis.

minimum_score: Najniższa wartość wyniku określonego zakresu.

Maximum_Score: Najwyższa wartość wyniku określonego zakresu.

Min i maksymalne końce zakresu można określić na różne sposoby. Ilekroć nie masz pojęcia o najniższych i najwyższych możliwych wynikach w sortowanym zestawie, można użyć -inf i +inf. Idealnie pobiera wszystkie elementy w sortowanym zestawie.

Ponadto określone wartości minimum i maksymalne są obejmujące zakres. Jeśli chcesz, aby którekolwiek z tych wartości było ekskluzywne, „(” postać może być używana jak w ZrangeByscore Komenda.

To polecenie zwraca wartość liczb całkowitą, która jest liczbą elementów w określonym zakresie.

Przypadek użycia - policz graczy o liczbie złota między danym zakresem

Struktura danych sortowanego z zestawu Redis jest idealnym kandydatem do przechowywania danych tablicy liderów. Załóżmy scenariusz, w którym gra online oferuje jej graczom ilość złota po zakończeniu misji. Na podstawie złota każdego gracza należy zaimplementować tabelę liderów. Możemy łatwo użyć zestawów sortowanych Redis do wdrożenia takiej tabeli liderów. Kwota złota można zmapować jako wynik każdego członka.

Utwórzmy sortowany zestaw Gameleaderboard i dodaj niektórych graczy ze złotymi ilościami, jak pokazano następujące. Polecenie Zadd służy do tworzenia i dodawania graczy do posortowanego zestawu przechowywanego w kluczu GameLeaderboard:

Zadd Gameleaderboard 1000 „Jack” 450 "Rexy" 3000 "John" 1600 "Mary" 450 „Rakesh”

Użyjmy polecenia ZrangeByscore, aby sprawdzić, czy członkowie są dodawane i sortowane prawidłowo.

ZrangeByscore gameleaderboard -inf +inf

Zgodnie z oczekiwaniami członkowie są przechowywani i posortowani według wyników. Ponieważ „Rexy” i „Rakesh” otrzymały te same wyniki, są one nakazane leksykograficznie, a „Rakesh” jest najwyższym członkiem zwróconej listy.

Policzmy liczbę elementów w sortowanym zestawie za pomocą polecenia ZCount:

ZCount GameLeaderboard -inf +inf

Ponieważ otrzymaliśmy pięć członków zestawu, zwrócona wartość wynosi 5, ponieważ zakres jest od nieskończoności do +nieskończoności, która obejmuje cały zestaw.

Podajmy zakres od 1000 do 3000.

ZCount GameLeaderboard 1000 3000

Najpierw sprawdźmy nasz zestaw za pomocą polecenia ZrangeByscore, jak pokazano następująco:

ZrangeByscore GameLeaderboard -inf +inf withsores

W przedziale od 1000 do 3000 jest trzech członków. Ponieważ 1000 i 3000 są domyślnie włączające, poprzednie polecenie ZCount powinno zwrócić 3.

Użyjmy postaci „(”, aby wykluczyć wyniki 1000 i 3000 z tym samym przykładem pokazanym w poprzednim przykładzie:

Zcount GameLeaderboard (1000 (3000

Ponieważ wyniki 1000 i 3000 są wykluczone, jedynym lewym członkiem jest „Mary” z wynikiem 1600. Stąd zwrócona liczba wynosi 1.

Ilekroć musisz policzyć członków między szeregiem wyników, zaleca się użycie polecenia ZCount, które jest niezwykle szybsze.

Wniosek

Podsumowując, polecenie ZCount służy do zliczenia liczby elementów w danym zakresie wartości wyników. Ma złożoność czasu O (log (n)). Jak omówiono, można go używać przy minimalnych i maksymalnych wartościach w celu zdefiniowania zakresu wyników jak w poleceniu ZrangeByscore. Wartości min i maksymalne są domyślnie włączające. Jak pokazano wcześniej, „(” znaku można użyć do wykluczenia wartości wyników. Ogólnie rzecz biorąc, polecenie ZCount jest proste w użyciu i działa z doskonałą wydajnością.