Redis Bitop

Redis Bitop

Fundamentos de los mapas de bits redis

Los mapas de bits redis son otra forma de tratar los datos de tipo de cadena como una colección de bits o vectores de bits. Por lo tanto, la estructura de datos subyacente de los mapas de bits es una cadena donde se almacena una cadena utilizando una matriz de ceros y otros en la memoria de la computadora. Los mapas de bits redis admiten la recuperación y la alternancia del valor de bit de un desplazamiento dado en un mapa de bits. Además, proporciona comandos para realizar las operaciones bit a bits como y, o, no, y Xor en múltiples cadenas que se almacenan en claves dadas.

Como se mencionó, un valor de cadena que se almacena en la base de datos de Redis puede tratarse como un mapa de bits. Podemos realizar las operaciones bit a múltiples cadenas Redis almacenadas en las teclas dadas de la siguiente manera:

Y operación

La siguiente figura ilustra cómo funcionan el bit a bit y la operación en dos cadenas dadas. En este ejemplo, usaremos las cadenas A y B para realizar el bit a bit y la operación.

U operación

Realicemos el bit a bit u operación en las mismas dos cadenas del ejemplo anterior.

Como se muestra, el mapa de bits resultante es 1000011, que es la representación ASCII de la letra C.

Operación XOR

La siguiente figura explica claramente cómo funciona la operación XOR bitwise en las mismas dos cadenas:

No operación

El no operador no se usa como operador unario en las operaciones de Bitwise Redis. Por lo tanto, solo se necesita un valor de cadena como entrada.

La operación de bit a bit no en la cadena a devuelve el valor hexadecimal \ xbe y no hay valor ASCII imprimible asociado.

El comando bitop

Redis ha introducido el comando de Bitop para realizar las operaciones bit a bits discutidas anteriormente en una o múltiples cadenas (mapas de bits) almacenados en claves dadas. Este comando funciona con O (n) complejidad de tiempo donde n es la longitud de la cadena más larga en la comparación que es bastante más lenta que las otras operaciones de mapa de bits. Este comando realiza la operación bit a bit especificada y almacena el mapa de bits resultante (cadena) en la tecla de destino especificada.

La sintaxis del comando bitop es la siguiente:

Bitop bitwise_operation Destination_key bitmap_key [bitmap_key ...]

El comando bitop devuelve un valor entero que es el tamaño del mapa de bits resultante. El tamaño de la mapa de bits resultante es igual al tamaño del mapa de bits de entrada más largo.

En algunos casos, los mapas de bits de entrada contienen cadenas en diferentes tamaños. Entonces, el comando bitop trata todas las otras cadenas de entrada que son más cortas que las más largas como acaba cero hasta el tamaño de la cadena más larga. Del mismo modo, las teclas de mapa de bits inexistentes se consideran cadenas de byte cero con tamaños iguales a la cadena de entrada más larga.

Caso de uso: usuarios activos de un sitio web en un día determinado

Supongamos que el propietario de un sitio web está interesado en los usuarios activos que inician sesión en un sitio web, semanalmente. En este caso, un mapa de bits es un candidato ideal para almacenar las visitas diarias. Cada usuario se puede representar utilizando un desplazamiento en el mapa de bits. Además, se pueden usar mapas de bits separados por día con una ID única como se muestra en la siguiente ilustración:

Creemos mapas de bits para los tres días anteriores (domingo, lunes y martes) que tienen el estado de la visita de cada usuario. El comando set se puede usar para crear cada mapa de bits de la siguiente manera:

Creamos el primer mapa de bits identificado por la clave Visita: 2022: 08: 4: Sol. Entonces, el primer usuario se identifica por el compensación 0. Supongamos que el usuario asociado con la identificación del usuario 0 visitó el sitio web el domingo. Por lo tanto, el desplazamiento 0 se establece en 0 de la siguiente manera:

Setbit Visita: 2022: 08: 4: Sol 0 1

Del mismo modo, el estado de visita de los usuarios asociados con las ID de usuario 1, 2, 3 y 4 se establece en consecuencia.

Setbit Visita: 2022: 08: 4: Sol 1 0
Setbit Visita: 2022: 08: 4: Sol 2 1
Setbit Visita: 2022: 08: 4: Sol 3 0
Setbit Visita: 2022: 08: 4: Sol 4 0

Inspeccionemos los valores de bit para cada usuario usando el comando getBit de la siguiente manera:

Visita de Getbit: 2022: 08: 4: Sol 0
Visita de Getbit: 2022: 08: 4: Sol 1
Visita de Getbit: 2022: 08: 4: Sol 2
Visita de Getbit: 2022: 08: 4: Sol 3
Visita de Getbit: 2022: 08: 4: Sol 4

Del mismo modo, podemos crear los mapas de bits para almacenar las visitas al usuario los lunes y martes que son identificados por las teclas Visita: 2022: 08: 5: Mon y Visita: 2022: 08: 6: martes.

El interés del propietario del sitio web es conseguir que los usuarios que visiten el sitio web al menos un día a partir del domingo, lunes o martes. Este tipo de información se puede obtener utilizando el comando bitop de la siguiente manera. La operación o bit a bits es ideal para verificar a los usuarios que visitaron el sitio al menos un día desde los tres días.

Bitop o AtleaseNevisituser Visita: 2022: 08: 4: Sol Visita: 2022: 08: 5: Mon Visita: 2022: 08: 6: martes

Realizamos la operación o la operación en los tres mapas de bits creados anteriormente. El mapa de bits resultante se almacena en la clave al menos. Verifiquemos la cadena o mapa de bits resultante usando el comando get de la siguiente manera:

Obtener AtLeaseNevisituser

El valor hexadecimal de mapa de bits devuelto o de cadena es \ xb0 que representa el signo de grado en ASCII. Inspeccionemos cada bit de la cadena que se almacena en la tecla de destino AtleaseNevisituser Usando el comando getbit.

GetBit AtLeaseNevisituser 0
GetBit AtLeaseNevisituser 1
GetBit AtLeaseNevisituser 2
GetBit AtLeaseNevisituser 3
GetBit AtLeaseNevisituser 4

Como pudimos ver en la salida, el mapa de bits resultante se parece al siguiente:

1 | 0 | 1 | 1 | 0

El desplazamiento 0 está asociado con el ID de usuario 0, el desplazamiento 1 es con la ID de usuario 1, y así sucesivamente. Según el resultado de la operación bit a bit, solo tres usuarios visitaron el sitio web al menos un día a partir de los tres días mencionados. Los usuarios que se almacenan en las compensaciones 1 y 4 que están asociados con las ID de usuario 1 y 4 no han visitado el sitio web los domingos, lunes o martes.

Conclusión

En resumen, los mapas de bits redis son una matriz de ceros y los que cada bit se identifica por un valor de compensación. Como se discutió, el comando bitop se usa para realizar las operaciones bit a bit, como o, y, xor, y no sobre un mapa de bits o cadena especificado. Como se muestra en el caso de uso, la cadena resultante se almacena en la clave especificada. Este comando es bastante lento cuando aumenta el tamaño de la cadena más larga. En general, el comando bitop es útil para identificar los patrones de las visitas al sitio web y las estadísticas de uso de la aplicación de música durante un período determinado.