Redis Setbit

Redis Setbit
„String jest najbardziej podstawowym typem danych Redis, który może pomieścić obiekty JSON, sekwencje bajtów, tablicę wartości binarnych i proste teksty. Najbardziej wpływowym faktem na temat strun Redis jest to, że można je traktować jako wektor bitów. Stąd ciągami Redis można użyć do reprezentowania map bitw. Krótko mówiąc, bitmapa Redis może być postrzegana jako szereg bitów przechowywanych w ciągu Redis."

Każdy bit w bitmapie znajduje się przy użyciu wartości przesunięcia. Wartość przesunięcia danego bitu jest obliczana na podstawie współrzędnych x i y. Do obliczenia przesunięcia danego bitu można zastosować następujący wzór matematyczny.

Offset = y współrzędna * max_width_of_map + x współrzędna

Rozważmy następującą bitmapę i jak wygląda wartość przesunięcia dla różnych bitów.

Wartości na każdym bicie można ustawić za pomocą wartości przesunięcia. Redis zapewnia polecenie SetBit, aby ustawić wartość bitową na 0 lub 1. W tym przewodniku będziemy omawiać składnię i przypadki użycia komendy setbit.

Polecenie setbit

Komenda SetBit służy do manipulowania bitami przechowywanymi w danym przesunięciu w ciągu Redis. W szczególności to polecenie ustawia wartość danego bitu na 1 lub 0. Redis Bitmap może pomieścić do 2^32-1 przesunięć, co ogranicza maksymalny rozmiar mapy bitowej do 512 MB. Ponadto przesunięcia mapy bitowej zaczynają się od 0. indeksu.

Poniżej znajduje się składnia polecenia setbit.

Wartość przesunięcia klawisza setbit

klucz: Nazwa klawisza Redis, który przechowuje wartość ciągu.

zrównoważyć: Wartość przesunięcia bitu.

wartość: Wartość bitu. Może to być 1 lub 0.

Jeśli klucz nie istnieje, polecenie SetBit utworzy nową wartość ciągu i ustaw wartość bitowa na określonym przesunięciu. Ponadto polecenie setbit działa na złożoności czasowej O (1), która jest znacznie szybkim procesem. Może się to nieco różnić, gdy zamierzamy ustawić bit 2^31-1 w bitmapie, gdy określony klucz nie istnieje lub przechowuje bardzo małą wartość ciągów, ponieważ pamięć dla wszystkich bitów pośrednich należy przydzielić. Zajmie to trochę czasu.

Polecenie SETBIT zwraca oryginalną wartość bitową przechowywaną na przesunięciu w ciągu zapisanym w określonym klawiszu.

Przypadek użycia - uprawnienia systemu plików za pomocą Redis Bitmap

Załóżmy, że system operacyjny podobny do UNIX utrzymuje uprawnienia do plików za pomocą bitmap. Odczyt, zapis i wykonanie uprawnień dla danego pliku/folderu są przechowywane w bitmapie w następujący sposób.

Ustawmy uprawnienia tylko do odczytu na plik o nazwie „A.tekst". Aby to wyjaśnić, uprawnienie odczytu jest oznaczone bitem znajdującym się przy 0. Zatem ustawym 0. Offset na 1, wywołując polecenie SETBIT w następujący sposób.

Plik setbit: id: 100: Nazwa: a.TXT 0 1

Sprawdźmy, czy przesunięcie 0. zostało poprawnie ustawione za pomocą polecenia getbit, jak pokazano następująco.

Plik getbit: id: 100: Nazwa: a.TXT 0

Nie musimy wyraźnie ustawiać dwóch pozostałych przesunięć, ponieważ domyślna wartość bitu wynosi 0. Stąd 1 i 2. bity przesunięcia powinny być domyślnie ustawione na 0, jak pokazano następujące.

Podobnie możemy ustawić wszystkie trzy odczyt, zapisać i wykonać uprawnienia na folderze ABC w następujący sposób. Wiele bitów można ustawić, wywołując polecenie setBit wiele razy.

Folder Setbit: Id: 3: Nazwa: ABC 0 1
Folder Setbit: Id: 3: Nazwa: ABC 1 1
Folder Setbit: Id: 3: Nazwa: ABC 2 1

Sprawdźmy wartości 3 bitów za pomocą polecenia getbit.

Folder Getbit: Id: 3: Nazwa: ABC 0
Folder Getbit: Id: 3: Nazwa: ABC 1
Folder Getbit: Id: 3: Nazwa: ABC 2

Ponadto możemy użyć polecenia Redis Get, aby odzyskać reprezentację łańcucha danej mapy bitowej. Jak widać na następujących wyjściach, wartość sześciokątna została zwrócona.

Równa wartość dziesiętna wynosiłaby 224.

Ogólnie rzecz biorąc, polecenie setbit można skutecznie użyć do manipulowania kawałkiem bitmapy.

Wniosek

Podsumowując, polecenie setbit jest używane do wyczyszczenia lub ustawiania wartości bitowej na podawanym przesunięciu w ciągu Redis przechowywanego w danym kluczu. Jak wspomniano, ciąg Redis można traktować jako szereg bitów, które mogą reprezentować strukturę danych bitmap. Również polecenie setbit działa na bitmapach w złożoności czasowej O (1). Jak widziałeś w przypadkach użycia, wiele bitów można ustawić, wywołując polecenie setbit wiele razy. Za pomocą polecenia Redis GET można odzyskać wartość ciągu bitmap.