Redis Zdiff

Redis Zdiff

Wprowadzenie do ustalania różnicy

Różnica ustalona jest jedną z podstawowych operacji, które zawsze znajdowały. Ponadto różnica między danymi dwoma zestawami daje inny zestaw. Rozważ dwa zestawy A i B w następującej ilustracji:

A = „Jack”, „Daniel”, „Mary”
B = „Daniel”, „Nick”, „Mary”, „Ricky”

Zestaw różnicy A-B można zapisać w następujący sposób:

A-B = "Jacek", „Daniel”, „Mary” - „Daniel”, „Nick”, „Mary”, „Ricky”

Ponieważ przedmioty „Daniel” i „Mary” są obecne w obu zestawach, są one ignorowane podczas biorących udział w ustalonej różnicy A-B. Stąd ustalona różnica A-B jest następująca:

A-b = „jack”

To nie musi być takie same A-B i B-A. Rozważmy ustaloną różnicę B-A:

B = „Daniel”, „Nick”, „Mary”, „Ricky”
A = „Jack”, „Daniel”, „Mary”

B-a = „Daniel”, "Nacięcie", „Mary”, „Ricky” - „Jack”, „Daniel”, „Mary”

B-a = „Nick”, „Ricky”

Różnica ustawiona można wizualizować za pomocą schematu Venna w prostszy sposób w następujący sposób:

Polecenie ZDIFF

Zestawy sortowane w Redis obsługują operacje SET, takie jak Set Union, skrzyżowanie i różnica. W tym przewodniku skupimy się na poleceniu ZDIFF, które służy do wytworzenia posortowanej różnicy zestawu. Polecenie ZDIFF zwraca inny sortowany zestaw z dostarczonych sortowanych zestawów.

Składnia:

Polecenie ZDIFF ma prostą składnię, w której obowiązkowe jest określenie liczby kluczy jako pierwszego argumentu, jak pokazano następująco:

ZDIFF Number_of_keys Klucz [Klucz…] [ZeScores]


numer_of_keys: Liczba kluczy określonych zestawów posortowanych.

klucz: Klucz określonego zestawu posortowanego.

Zscores: To jest opcjonalny parametr. Po określaniu tego argumentu wyniki zwracanych elementów są wyświetlane.

To polecenie zwraca sortowany zestaw, który jest różnicą między dostarczonymi zestawami posortowanymi. Wyniki elementu są wyświetlane, jeśli Zscores argument jest przekazywany.

Przypadek użycia 1: Znajdź użytkowników, którzy są weganami

Załóżmy, że restauracja utrzymuje dwie listy, w których jedna wymieniono ludzi, którzy zamawiają warzywa, a drugi rejestruje osoby, które zamawiają mięso. Teraz chcą zidentyfikować wegan i wysłać wegetariański posiłek na urodziny. W tym scenariuszu można użyć struktury danych sortowanej z zestawu Redis.

Najpierw tworzymy zestaw do przechowywania ludzi, którzy zamawiali posiłki warzywne.

Zadd Vegiconsumers 10 Jack
Zadd Vegiconsumers 5 Mary
Zadd Vegiconsumers 13 Ricky


Wartość wyniku jest wykorzystywana jako średnia liczba posiłków zamówionych miesięcznie. Następnie tworzymy inny sortowany zestaw o nazwie Konsumenci.

Zadd Meatconsumers 22 Henrick
Zadd Meatconsumers 12 Mary
Zadd Meatconsumers 5 Ricky


Sprawdźmy członków obu sortowanych zestawów za pomocą polecenia Zrange.

Zrange Vegiconsumers 0 5
Zrange Meatconsumers 0 5


Wyjście:


Zgodnie z oczekiwaniami oba zestawy są wcześniej zapełniane określonymi członkami. Ponieważ zespół zarządzający restauracji musi zapytać wegans, powinniśmy zapełnić ustaloną różnicę między Vegikonsumers I Konsumenci. Poniższe polecenie zaludniono sortowany zestaw, który składa się z użytkowników, którzy zamówili tylko posiłki warzywne.

Zdiff 2 Vegiconsumers Meatconsumers


Ponieważ bierzemy określoną różnicę między dwoma zestawami, pierwszy argument jest ustawiony na 2. Następnie określamy klucze dwóch zestawów.

Możemy zmodyfikować poprzednie polecenie, aby wyświetlić wartość wyniku zwróconego członka.

Zdiff 2 Vegiconsumers Meatconsumers withsours


Wyjście:


Zgodnie z oczekiwaniami, ustalona różnica między Vegikonsumers I Konsumenci Produkuje sortowany zestaw z jednym członkiem, jak pokazano następująco:

Vegiconsumers = Mary, Jack, Ricky

Meatconsumers = Ricky, Mary, Henrick

Vegiconsumers - Meatconsumers = Mary, Jack, Ricky - Ricky, Mary, Henrick = Jacek

Dlatego jedynym wegańskim klientem jest „Jack”.

Przypadek użycia 2: Znajdź użytkowników nie-wegan

Podobnie zarządzanie restauracjami może zapytać o klientów niebędących wegańskimi. W takim przypadku różnica ustalona powinna być następująca:

Meatconsumers - Vegiconsumers

Tym razem użyj polecenia ZDIFF z niewielką modyfikacją.

Zdiff 2 Meatconsumers Vegiconsumers z dsem


Wyjście:


Zgodnie z oczekiwaniami członek „Henry” jest jedynym klientem, który tylko zamówił posiłki z mięsem bez zamówienia posiłku warzywnego.

Wniosek

Krótko mówiąc, Redis obsługuje fundamentalne operacje teorii, takie jak Set Union, skrzyżowanie i różnica w sortowanym typu danych zestawu. Polecenie ZDIFF służy do wytworzenia różnicy między danymi dwoma zestawami. Jak wspomniano, to polecenie zwraca inny sortowany zestaw, który składa się z członków, które należą tylko do pierwszego określonego zestawu. Jak pokazano w poprzednich przypadkach użycia, obowiązkowe jest określenie liczby kluczy jako pierwszego argumentu tego polecenia. Ogólnie rzecz biorąc, polecenie ZDIFF ma prawie logarytmiczną złożoność czasu, którą można skutecznie stosować w aplikacjach o niskiej opóźnieniu.