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.