Redis Bitop

Redis Bitop

Fondamenti di bitmap di Redis

Le bitmap Redis sono un altro modo per trattare i dati di tipo stringa come una raccolta di bit o vettori di bit. Quindi, la struttura dei dati sottostante delle bitmap è una stringa in cui una stringa viene memorizzata utilizzando un array di zeri e quelli nella memoria del computer. Le bitmaps Redis supportano il recupero e l'alternanza del valore bit di un determinato offset in una bitmap. Inoltre, fornisce comandi per eseguire le operazioni bitwise come e, o, no e xor su più stringhe che sono archiviate a tasti determinati.

Come accennato, un valore di stringa che viene archiviato nel database Redis può essere trattato come una bitmap. Possiamo eseguire le operazioni bitwise su più stringhe Redis memorizzate a determinate chiavi come segue:

E operazione

La figura seguente illustra come funzionano il bitwise e l'operazione su due stringhe fornite. In questo esempio, useremo le stringhe A e B per eseguire bitwise e operazioni.

O operazione

Eseguiamo il bitwise o l'operazione sulle stesse due stringhe dall'esempio precedente.

Come mostrato, la bitmap risultante è 1000011 che è la rappresentazione ASCII della lettera C.

Operazione XOR

La figura seguente spiega chiaramente come funziona l'operazione XOR bitwise sugli stessi due stringhe:

Non operazione

L'operatore non viene utilizzato come operatore unario nelle operazioni di Redis Bitwise. Quindi, ci vuole solo un valore di stringa come input.

L'operazione Bitwise non sulla stringa A restituisce il valore esadecimale \ xBE e nessun valore ASCII stampabile associato.

Il comando bitop

Il comando bi. Questo comando opera con O (n) complessità del tempo in cui n è la lunghezza della stringa più lunga nel confronto che è abbastanza più lenta delle altre operazioni BitMap. Questo comando esegue l'operazione BitWise specificata e memorizza la bitmap (stringa) risultante nella chiave di destinazione specificata.

La sintassi del comando bitop è la seguente:

Bitop bitwise_operation Destination_Key Bitmap_key [Bitmap_Key…]

Il comando bitop restituisce un valore intero che ha la dimensione della bitmap risultante. La dimensione della bitmap risultante è uguale alla dimensione della bitmap di input più lunga.

In alcuni casi, le bitmap di input contengono stringhe in diverse dimensioni. Quindi, il comando bitop tratta tutte le altre stringhe di input più brevi di quelle più lunghe come zero imbottiti fino alla dimensione della stringa più lunga. Allo stesso modo, le chiavi BitMap inesistenti sono considerate stringhe zero byte con dimensioni uguali alla stringa di input più lunga.

Caso di utilizzo: utenti attivi di un sito Web in un determinato giorni

Supponiamo che un proprietario di un sito Web sia interessato agli utenti attivi che hanno effettuato l'accesso a un sito Web, settimanalmente. In questo caso, una bitmap è un candidato ideale per archiviare le visite quotidiane. Ogni utente può essere rappresentato utilizzando un offset nella bitmap. Inoltre, le bitmap separate possono essere utilizzate al giorno con un ID univoco come mostrato nella seguente illustrazione:

Creiamo bitmap per i tre giorni precedenti (domenica, lunedì e martedì) che mantengono lo stato della visita di ciascun utente. Il comando set può essere utilizzato per creare ogni bitmap come segue:

Creiamo la prima bitmap identificata dalla chiave Visita: 2022: 08: 4: sole. Quindi, il primo utente è identificato dall'offset 0. Supponiamo che l'utente associato all'ID utente 0 abbia visitato il sito Web domenica. Quindi, l'offset 0 è impostato su 0 come segue:

SetBit Visit: 2022: 08: 4: Sun 0 1

Allo stesso modo, lo stato di visita degli utenti associati agli ID utente 1, 2, 3 e 4 è impostato di conseguenza.

SetBit Visit: 2022: 08: 4: Sun 1 0
SetBit Visita: 2022: 08: 4: Sun 2 1
Visita SETBIT: 2022: 08: 4: Sun 3 0
SetBit Visita: 2022: 08: 4: Sun 4 0

Ispezioniamo i valori bit per ciascun utente utilizzando il comando getbit come segue:

Getbit Visit: 2022: 08: 4: Sun 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

Allo stesso modo, possiamo creare le bitmap per archiviare le visite utente lunedì e martedì identificate dalle chiavi Visita: 2022: 08: 5: mon E Visita: 2022: 08: 6: mar.

L'interesse del proprietario del sito Web è quello di ottenere gli utenti che hanno visitato il sito Web almeno un giorno da domenica, lunedì o martedì. Questo tipo di informazioni può essere ottenuto utilizzando il comando bitop come segue. L'operazione o bit è l'ideale per controllare gli utenti che hanno visitato il sito almeno un giorno dai tre giorni.

Bi

Abbiamo eseguito il bitwise o l'operazione su tre bitmap create precedente. La bitmap risultante è memorizzata nella chiave AtleastOnevisituser. Controlliamo la stringa o la bitmap risultante usando il comando GET come segue:

Ottieni AtleaseOvisituser

Il valore esadecimale della bitmap o della stringa restituita è \ xb0 che rappresenta il segno di grado in ASCII. Ispezioniamo ogni bit della stringa che viene archiviata nella chiave di destinazione AtleaseOvisituser Utilizzando il comando getbit.

getbit atleaseonevisituser 0
getbit atleaseonevisituser 1
getbit atleaseonevisituser 2
getbit atleaseonevisituser 3
getbit atleaseonevisituser 4

Come abbiamo potuto vedere nell'output, la bitmap risultante sembra le seguenti:

1 | 0 | 1 | 1 | 0

L'offset 0 è associato all'ID utente 0, l'offset 1 è con l'ID utente 1 e così via. Secondo il risultato del bitwise o dell'operazione, solo tre utenti hanno visitato il sito Web almeno un giorno dai tre giorni menzionati. Gli utenti che sono archiviati agli offset 1 e 4 associati agli ID utente 1 e 4 non hanno visitato il sito Web domenica, lunedì o martedì.

Conclusione

In sintesi, le bitmap di Redis sono un array di zeri e quelli in cui ogni bit è identificato da un valore di offset. Come discusso, il comando bitop viene utilizzato per eseguire le operazioni bitwise come o e, xor e non su una bitmap o una stringa specificata. Come mostrato nel caso d'uso, la stringa risultante viene memorizzata nella chiave specificata. Questo comando è piuttosto lento quando la dimensione della stringa più lunga è aumentata. Nel complesso, il comando Bitop è utile per identificare i modelli di visite al sito Web e statistiche sull'utilizzo dell'app musicale per un determinato periodo.