Redis setbit

Redis setbit
“La cadena es el tipo de datos Redis más fundamental, que puede contener objetos JSON, secuencias de bytes, una matriz de valores binarios y textos simples. El hecho más influyente sobre las cuerdas de Redis es que pueden tratarse como un vector de bits. Por lo tanto, las cadenas Redis se pueden usar para representar mapas de bits. En resumen, un mapa de bits redis puede verse como una variedad de bits almacenados en una cadena Redis."

Cada bit en el mapa de bits se encuentra utilizando un valor de desplazamiento. El valor de compensación de un bit dado se calcula en función de las coordenadas X e Y. La siguiente fórmula matemática se puede aplicar para calcular el desplazamiento de un bit dado.

Coordenadas de offset = y * max_width_of_map + x coordenada

Consideremos el siguiente mapa de bits y cómo se ve el valor de compensación para diferentes bits.

Los valores en cada bit se pueden configurar utilizando el valor de desplazamiento. Redis proporciona el comando setBit para establecer un valor de un bit en 0 o 1. En esta guía, discutiremos la sintaxis y los casos de uso del comando setbit.

El comando setbit

El comando setbit se usa para manipular bits almacenados en un desplazamiento dado en una cadena redis. Específicamente, este comando establece el valor de un bit dado en 1 o 0. Redis Bitmap puede contener hasta 2^32-1 compensaciones, lo que limita el tamaño máximo de un mapa de bits a 512mb. Además, las compensaciones de mapa de bits comienzan desde el índice 0.

La siguiente es la sintaxis del comando setbit.

Valor de compensación de la tecla setBit

llave: El nombre de la tecla Redis, que almacena un valor de cadena.

compensar: El valor de compensación del bit.

valor: El valor del bit. Esto puede ser 1 o 0.

Si la clave no existe, el comando setBit creará un nuevo valor de cadena y establecerá el valor de bit en un desplazamiento especificado. Además, el comando setBit opera en o (1) complejidad de tiempo que es un proceso considerablemente rápido. Esto podría variar ligeramente cuando vamos a establecer el bit 2^31-1 en un mapa de bits cuando la clave especificada no existe o almacena un valor de cadena muy pequeño porque la memoria para todos los bits intermedios debe asignarse. Tomaría algo de tiempo.

El comando setBit devuelve el valor de bit original almacenado en el desplazamiento en la cadena almacenada en una clave especificada.

Caso de uso: permisos del sistema de archivos utilizando Redis Bitmap

Supongamos que un sistema operativo similar a UNIX mantiene los permisos de archivo utilizando mapas de bits. Los permisos de lectura, escritura y ejecución para un archivo/carpeta determinado se almacenan en un mapa de bits de la siguiente manera.

Establezcamos los permisos de solo lectura en el archivo llamado "A.TXT". Para dejarlo claro, el permiso de lectura se denota por el bit ubicado en el desplazamiento 0. Entonces, estableceremos el desplazamiento 0 en 1 llamando al comando setbit de la siguiente manera.

Archivo Setbit: ID: 100: Nombre: A.txt 0 1

Verifiquemos si el desplazamiento 0 se ha establecido correctamente utilizando el comando getBit, como se muestra en el siguiente.

Archivo GetBit: ID: 100: Nombre: A.txt 0

No necesitamos establecer las otras dos compensaciones explícitamente ya que el valor de bits predeterminado de un bit es 0. Por lo tanto, los bits de compensación 1 y segundo se deben establecer implícitamente en 0, como se muestra en lo siguiente.

Del mismo modo, podemos establecer los tres lecturas, escribir y ejecutar permisos en la carpeta ABC de la siguiente manera. Se pueden establecer múltiples bits llamando al comando setbit varias veces.

Carpeta Setbit: ID: 3: Nombre: ABC 0 1
Carpeta Setbit: ID: 3: Nombre: ABC 1 1
Carpeta Setbit: ID: 3: Nombre: ABC 2 1

Verifiquemos los valores de 3 bits usando el comando getBit.

Carpeta Getbit: ID: 3: Nombre: ABC 0
Carpeta GetBit: ID: 3: Nombre: ABC 1
Carpeta GetBit: ID: 3: Nombre: ABC 2

Además, podemos usar el comando redis get para recuperar la representación de la cadena de un mapa de bits dado. Como puede ver en la siguiente salida, el valor hexadecimal se ha devuelto.

El valor decimal igual sería 224.

En general, el comando setbit se puede usar de manera efectiva para manipular el bit de mapa de bits.

Conclusión

En resumen, el comando setBit se usa para borrar o establecer el valor de bit en un desplazamiento dado en una cadena redis almacenada en una clave dada. Como se mencionó, una cadena Redis puede tratarse como una variedad de bits que pueden representar una estructura de datos de mapa de bits. Además, el comando setBit funciona en mapas de bits en o (1) complejidad del tiempo. Como ha visto en los casos de uso, se pueden establecer múltiples bits llamando al comando setbit varias veces. Con la ayuda del comando redis get, se puede recuperar el valor de cadena del mapa de bits.