Redis Bitop

Redis Bitop

Podstawy bitmap Redis

Redis Bitmap to kolejny sposób traktowania danych typu stringowego jako zbioru bitów lub wektorów bitów. Stąd podstawowa struktura danych bitmap to ciąg, w którym ciąg jest przechowywany za pomocą tablicy zer i tych w pamięci komputera. Redis Bitmaps obsługuje pobieranie i naprzemiennie wartości bitowej podawanego przesunięcia w bitmapie. Ponadto zapewnia polecenia do wykonywania operacji bitwennych, takich jak i, lub nie, i xor na wielu strunach przechowywanych w danych klawiszach.

Jak wspomniano, wartość ciągu przechowywana w bazie danych Redis można traktować jako mapę bitową. Możemy wykonywać operacje bitowe na wielu strunach Redis przechowywanych w danych klawiszach w następujący sposób:

I operacja

Poniższy rysunek ilustruje, jak działają bitowe i działające na dwóch danych ciągach. W tym przykładzie użyjemy ciągów A i B do wykonywania bitowych i operacji.

Lub operacja

Wykonajmy bitowe lub operacyjne na tych samych dwóch ciąży z poprzedniego przykładu.

Jak pokazano, wynikowa mapa bitowa to 1000011, czyli reprezentacja litery C ASCII.

Operacja XOR

Poniższy rysunek wyraźnie wyjaśnia, w jaki sposób operacja Bitwise Xor działa na tych samych dwóch ciąży:

Nie operacja

Operator nie jest używany jako nieżyny operator w operacjach Redis Bitwise. Stąd wymaga tylko jednej wartości ciągu jako wejścia.

Bitwise nie działa na ciągu A Zwraca wartość szesnastka \ xbe i brak powiązanej wartości ASCII do wydrukowania.

Polecenie bitop

Komenda Bitop została wprowadzona przez Redis do wykonywania wcześniejszych omawianych operacji bitowych na jednym lub wielu strunach (bitmapach) przechowywanych w danych klawiszach. To polecenie działa z złożonością czasu O (n), gdzie n jest długością najdłuższego ciągu w porównaniu, które jest dość wolniejsze niż inne operacje bitmapowe. To polecenie wykonuje określoną operację Bitwise i przechowuje wynikową mapę bitową (ciąg) w określonym kluczu docelowym.

Składnia polecenia Bitop jest następująca:

Bitop Bittise_operation Destination_Key Bitmap_Key [bitmap_key…]

Komenda Bitop zwraca wartość liczb całkowitą, która jest wielkością wynikającej z tego bitmap. Rozmiar powstałej mapy bitowej jest równy rozmiarowi najdłuższej mapy bitowej wejściowej.

W niektórych przypadkach wejściowe bitmapy zawierają ciągi w różnych rozmiarach. Tak więc polecenie Bitop traktuje wszystkie inne struny wejściowe, które są krótsze niż najdłuższe jako zero do wielkości najdłuższego ciągu. Podobnie, nieistniejące klawisze bitmapowe są uważane.

Przypadek użycia - aktywni użytkownicy witryny w danych dniach

Załóżmy, że właściciel witryny jest zainteresowany aktywnymi użytkownikami, którzy są zalogowani na stronie internetowej, co tydzień. W takim przypadku bitmapa jest idealnym kandydatem do przechowywania codziennych wizyt. Każdy użytkownik może być reprezentowany za pomocą przesunięcia w bitmapie. Ponadto oddzielne mapy bitowe można używać dziennie z unikalnym identyfikatorem, jak pokazano na poniższej ilustracji:

Stwórzmy bitmapy na poprzednie trzy dni (niedziela, poniedziałek i wtorek), które mają status wizyty każdego użytkownika. Polecenie SET może być używane do utworzenia każdej bitmapy w następujący sposób:

Tworzymy pierwszą mapę bitową identyfikowaną przez klucz Odwiedź: 2022: 08: 4: Słońce. Tak więc pierwszy użytkownik jest identyfikowany przez przesunięcie 0. Załóżmy, że użytkownik powiązany z identyfikatorem użytkownika 0 odwiedził witrynę w niedzielę. Stąd przesunięcie 0 jest ustawione na 0 w następujący sposób:

Wizyta Setbit: 2022: 08: 4: Słońce 0 1

Podobnie status wizyty użytkowników powiązanych z identyfikatorami użytkownika 1, 2, 3 i 4 jest odpowiednio ustawiony.

Wizyta Setbit: 2022: 08: 4: Słońce 1 0
Wizyta Setbit: 2022: 08: 4: Sun 2 1
Wizyta Setbit: 2022: 08: 4: Słońce 3 0
Wizyta Setbit: 2022: 08: 4: Sun 4 0

Sprawdźmy wartości bitów dla każdego użytkownika za pomocą polecenia getbit w następujący sposób:

Getbit Visit: 2022: 08: 4: Słońce 0
Getbit Visit: 2022: 08: 4: Sun 1
Getbit Visit: 2022: 08: 4: Sun 2
Getbit Visit: 2022: 08: 4: Sun 3
Getbit Visit: 2022: 08: 4: Sun 4

Podobnie możemy utworzyć mapy bitowe do przechowywania wizyt użytkowników w poniedziałek i wtorek, które są identyfikowane przez klucze Odwiedź: 2022: 08: 5: mon I Odwiedź: 2022: 08: 6: Tue.

Zainteresowanie właściciela witryny jest uzyskanie użytkowników, którzy odwiedzili witrynę co najmniej jeden dzień od niedzieli, poniedziałku lub wtorek. Tego rodzaju informacje można uzyskać za pomocą polecenia BITOP w następujący sposób. Operacja lub bitowate jest idealna do sprawdzenia użytkowników, którzy odwiedzili witrynę co najmniej jeden dzień od trzech dni.

Bitop lub AtleaseoneVisituser

Wykonaliśmy Bitwise lub Operation na wcześniejszych utworzonych trzech bitmapach. Powstała mapa bitowa jest przechowywana w kluczu przynajmniejonevisituser. Sprawdźmy wynikowy ciąg lub mapę bitową za pomocą polecenia GET w następujący sposób:

Zdobądź Atleaseonevisituser

Zwrócona wartość szesnastkowa lub sześciokątna jest \ XB0, która reprezentuje znak stopni w ASCII. Sprawdźmy każdy kawałek ciągu, który jest przechowywany w kluczu docelowym Atleaseonevisituser Korzystanie z polecenia getbit.

Getbit AtleaseNevisituser 0
Getbit AtleeSeVisituser 1
Getbit AtleaseNevisituser 2
Getbit AtleeSeVisituser 3
Getbit AtleaseNevisituser 4

Jak mogliśmy zobaczyć na wyjściu, wynikowa mapa bitowa wygląda na następujące:

1 | 0 | 1 | 1 | 0

Przesunięcie 0 jest powiązane z identyfikatorem użytkownika 0, przesunięcie 1 jest z identyfikatorem użytkownika 1 i tak dalej. Zgodnie z wynikiem Bitwise lub operacji, tylko trzech użytkowników odwiedziło witrynę co najmniej jeden dzień z wymienionych trzech dni. Użytkownicy, którzy są przechowywani na offsetach 1 i 4, którzy są powiązani z identyfikatorami użytkowników 1 i 4, nie odwiedzili strony w niedzielę, poniedziałek lub wtorek.

Wniosek

Podsumowując, bitmapy Redis są tablicą zer i tych, w których każdy bit jest identyfikowany przez wartość przesunięcia. Jak omówiono, polecenie Bitop służy do wykonywania operacji bitwennych, takich jak OR, i, XOR, a nie przez określoną mapę bitową lub ciąg. Jak pokazano w przypadku użycia, wynikowy ciąg jest przechowywany w określonym kluczu. To polecenie jest dość powolne, gdy rozmiar najdłuższego łańcucha jest zwiększony. Ogólnie rzecz biorąc, polecenie BITOP jest przydatne w identyfikowaniu wzorców wizyt witryny i statystyk użytkowania aplikacji muzycznych w danym okresie.