„Czy chcesz wdrożyć tablicę liderów w czasie rzeczywistym do następnej gry online z Redis? Redis zapewnia do tego nietypowe rozwiązanie Zsets, która jest krótką nazwą zestawów sortowanych Redis i jest narzędziem, z którym każdy użytkownik Redis musi zapoznać się z.
Redis Zset to uporządkowana kolekcja unikalnych członków, w której każdy członek jest powiązany z wartością wyniku. Aby podkreślić, ZSET są uporządkowane domyślnie według ich wartości wyniku, co czyni je zupełnie inaczej niż zwykły typ zestawu. Ponadto więcej niż jeden członek może posiadać tę samą wartość wyniku, a członkowie zostaną w tym przypadku zamówieni leksykograficznie. Redis Zsets są lepszym wyborem dla kolejki priorytetowych, indeksowania wtórnego, tabeli liderów o niskiej opóźnieniu i ograniczającymi stawki. Ponieważ ZSET zapewniają wymagania w czasie rzeczywistym, takie jak reaktywność i dostęp w pamięci z niskim opóźnieniem.
Ponadto każdego członka przypisuje się wartość rang na podstawie ich pozycji w ZSET, który bardziej przypomina indeks oparty na 0 w tablicy Java."
Szybkie spojrzenie na podstawowe polecenia ZSET
Dostępnych jest kilka podstawowych poleceń do dodania, pobierania i usuwania z ZSET (sortowany zestaw) przechowywane w danym kluczu ZSET. Spójrzmy na trzy główne polecenia: Zadd, Zrange, Zrank i ZreM.
W czasie rzeczywistym Pokemon Przykład liderów gier zostanie tutaj pokazany.
Polecenie Zadd
Po rejestracji użytkownika musimy dodać każdego użytkownika do naszego nazwanego ZSET Pokemon: tablica liderów. Tak więc polecenie Zadd jest idealnym kandydatem do użycia w następujący sposób. Załóżmy, że początkowo zarejestrowaliśmy pięciu graczy. Tak więc wyniki zostaną przypisane do 0.
Zadd Pokemon: Leaderboard 0 John
Wartość zwracana wynosi 1, co oznacza, że jeden członek został dodany do ZSET przechowywanego w Key Pokemon: Leaderboard. Jeśli członek jest już dostępny w danym ZSET, tylko wartość wyniku zostanie zaktualizowana.
Wszyscy jesteśmy dobrze kontynuować. Więc przejdźmy dalej i dodajmy pozostałych czterech graczy do ZSET: Pokemon: Lekarz.
Zadd Pokemon: tablica liderów 0 Anna
Zadd Pokemon: tablica liderów 0 Zakariah
Zadd Pokemon: lider tablica 0 Bob
Zadd Pokemon: liderów 0 Mary
Polecenie Zrange
Wszystkich pięciu członków zostało pomyślnie dodanych. Następnie powinniśmy zbadać lub zapytać dodane elementy za pomocą polecenia Zrange. Polecenie Zrange pozwala odzyskać członków, które są posortowane w danym zakresie. Zakres można określić według wartości rangi, wyniku lub leksykografii.
Przejrzyjmy wszystkich członków, określając zakres według wartości rang.
Zrange Pokemon: tablica liderów 0 -1
Zgodnie z oczekiwaniami, wszyscy pięciu członków zostało zwróconych i zamówionych leksykograficznie, ponieważ wartości wyników są takie same dla wszystkich członków w tym momencie. Ponadto 0 to początkowe wskaźnik/ranga zakresu, a -1 oznacza najwyższy wskaźnik danego ZSET.
Polecenie Zrange oferuje szeroką gamę opcjonalnych argumentów, a my użyjemy argumentu z Scores z powyższym poleceniem, aby wyświetlić powiązane wyniki dla każdego członka.
Zrange Pokemon: lider tablica 0 -1 z sesorami
Polecenie Zincrby
Załóżmy, że gracze grają w grę od kilku godzin, a wyniki wzrosły z 0. Redis Zsets zapewnia polecenie Zincrby, aby zwiększyć wyniki każdego członka w następujący sposób.
Zincrby Pokemon: liderów 100 Bob
Powinno to zwiększyć wartość członka Bob z 0 do 100. Nazwijmy to samo polecenie, aby zwiększyć liczbę innych graczy.
Zincrby Pokemon: Leaderboard 200 Anna
Zincrby Pokemon: tablica liderów 76 Zakariah
Zincrby Pokemon: liderów 450 Mary
Zincrby Pokemon: liderów 167 John
Zgodnie z wartościami zwrotnymi wyniki powinny zostać poprawnie zaktualizowane. Użyjmy polecenia Zrange pewnego czasu, aby ponownie odzyskać członków za pomocą ich wyników.
Brawo! Wyniki graczy zostały odpowiednio zaktualizowane. Ponadto członkowie są uporządkowani według ich wyników w kolejności rosnącej, co jest fajną cechą Redis Zsets.
Polecenie Zrevrank
Trzeba wyświetlić stopień każdego gracza na tablicy liderów. Tak więc polecenie Zrevrank służy do pokazania rangi członków, w której element związany z najwyższym wynikiem będzie 0. ranga, a następna najwyższa będzie pierwsza ranga i tak dalej.
Od członka Mary ma najwyższy wynik, ten element powinien być uszeregowany jako najwyższy członek z 0. rangą. Użyjmy polecenia Zrevrank w następujący sposób.
Zrevrank Pokemon: lider Mary
Zgodnie z oczekiwaniami ranga wynosi 0, co oznacza najlepszego gracza na tablicy liderów gry.
Użyjmy polecenia Zrevrank z elementem Zakariasz w następujący sposób. Idealnie byłoby to ostatnia ranga, ponieważ ten członek ma najniższą wartość wyniku.
Polecenie ZREM
Ilekroć musimy usunąć element lub wiele elementów z ZSET, polecenie ZREM jest przydatne. Usuńmy Zakariasza z tablicy liderów z powodu jego niskiego wyniku.
Zrem Pokemon: tablica liderów Zakariah
Został właściwie usunięty z Zset.
Co najważniejsze, polecenia ZSET mają złożoność czasu O (log (n)), gdzie n jest liczbą elementów w sortowanym zestawie, który jest znacznie szybszy. Jednocześnie polecenie Zrange powinno być używane ostrożnie, ponieważ ma O (log (n) + l), gdzie l jest liczbą wyników zwróconych przez polecenie. Może to powodować problemy z wydajnością podczas pracy z większymi zestawami danych.
Wniosek
Podsumowując, Redis Zset to krótka nazwa dla sortowanego typu danych, który może pomieścić unikalnych członków uporządkowanych przez ich wartości wyników. Jak omówiono, członkami ZSET są nie powtarzanymi ciągami, a wartości wynikowe można powtórzyć. Gdy wielu członków jest przypisywanych o tej samej wartości wyniku, członkowie ci zostaną zamówieni leksykograficznie. ZSETS są doskonałym wyborem dla tabel liderów w czasie rzeczywistym, wtórnych indeksowania i kolejki priorytetowych z wyższą reakcją i niskim opóźnieniem dostępu do pamięci. Podsumowując, dostępnych jest kilka poleceń do dodania, usuwania i zapytania z danego Redis Zset z łatwością.