TairRoaring es una estructura de datos basada en Tair para bitmaps de tipo Roaring. Este tema describe TairRoaring y sus comandos compatibles.
Introducción a TairRoaring
Un bitmap (también conocido como bitset) es una estructura de datos común que utiliza pequeñas cantidades de almacenamiento para optimizar consultas sobre grandes volúmenes de datos. Los bitmaps ahorran más espacio que las implementaciones basadas en hash, pero no son adecuados para almacenar datos dispersos. Para resolver este problema se desarrollaron los bitmaps comprimidos. Los bitmaps de tipo Roaring son un estándar reconocido en la industria por ser más eficientes y equilibrados que otros bitmaps comprimidos.
TairRoaring optimiza los bitmaps de tipo Roaring de las siguientes maneras:
TairRoaring logra un equilibrio entre rendimiento y complejidad espacial en diversos escenarios mediante el uso de índices de dos niveles y contenedores dinámicos.
TairRoaring emplea técnicas de optimización como instrucción única, datos múltiples (SIMD), vectorización y algoritmos popcount para mejorar la eficiencia de cálculo y ofrecer una complejidad temporal y espacial eficiente.
TairRoaring aprovecha el potente rendimiento de cómputo y la alta estabilidad que proporciona Tair para admitir escenarios empresariales.
Escenarios típicos
TairRoaring es adecuado para industrias como transmisiones en vivo, música y comercio electrónico. Puede utilizar TairRoaring para agregar etiquetas multidimensionales a los usuarios en escenarios como recomendaciones personalizadas y marketing de precisión.
Notas de versión
Cambios en TairRoaring V2:
TR.RANGEINTARRAY: El comando TR.RANGEINTARRAY de TairRoaring V1 cambió a TR.RANGE en TairRoaring V2.
TR.SETRANGE: La salida del comando en la versión V1 es
OK, mientras que en la V2 es la cantidad de bits establecidos en 1. Los demás aspectos del comando permanecen sin cambios.
El 13 de septiembre de 2021 se lanzó TairRoaring V1 para instancias que ejecutan la versión menor 1.7.20 o posterior.
-
El 11 de marzo de 2022 se lanzó TairRoaring V2 para instancias que ejecutan la versión menor 1.7.27 o posterior.
TairRoaring V2 optimiza la implementación de algunos comandos y mejora su rendimiento. Esta versión incluye nueve comandos nuevos, entre ellos TR.SETBITS y TR.CLEARBITS; actualiza tres comandos, dos de los cuales siguen siendo compatibles con TairRoaring V1; y cambia el nombre de un comando.
-
El 20 de abril de 2022 se lanzó TairRoaring V2.2 para instancias que ejecutan la versión menor 1.8.1 o posterior.
Esta versión agrega los comandos TR.JACCARD, TR.CONTAINS y TR.RANK, y actualiza los errores que devuelven algunos comandos cuando una clave no existe (se eliminó el error
ERR key not found).
Mejores prácticas
Audience segmentation by using TairRoaring
Requisitos
La instancia debe ser una instancia memory-optimized de Tair. Si su instancia optimizada para memoria es compatible con Redis 5.0, la versión menor debe ser 1.7.7 o posterior.
La versión menor más reciente ofrece más funciones y mayor estabilidad. Se recomienda actualizar la instancia a la última versión menor. Para obtener más información, consulte Update the minor version of an instance. Si su instancia es una instancia de clúster o de división de lectura/escritura, se recomienda actualizar los nodos proxy de la instancia a la última versión menor para garantizar que todos los comandos se ejecuten correctamente.
Notas de uso
Las operaciones se aplican a datos de TairRoaring en una instancia de Tair.
Lista de comandos
|
Tipo |
Comando |
Sintaxis |
Descripción |
Cambio de versión |
|
Operación de escritura |
|
Establece el bit especificado en una clave de TairRoaring con un valor de 1 o 0 y devuelve el valor original del bit. El desplazamiento comienza en 0. |
- (N/A) |
|
|
|
Establece en 1 el valor del bit especificado en una clave de TairRoaring. Puede especificar varios valores de bits. |
Agregado en V2 |
||
|
|
Establece en 0 el valor del bit especificado en una clave de TairRoaring. Si el bit especificado ya tiene un valor de 0, no se realiza la operación. Puede especificar varios valores de bits. |
Agregado en V2 |
||
|
|
Establece en 1 los bits dentro del rango especificado en una clave de TairRoaring. El rango es un intervalo cerrado. |
Actualizado en V2. Tras la actualización del comando en V2, la salida cambió a la cantidad de bits establecidos en 1. |
||
|
|
Inserta una matriz de bits en la posición posterior al bit especificado en un Roaring Bitmap y sobrescribe los datos originales. La matriz de bits consta de ceros y unos. |
Agregado en V2 |
||
|
|
Invierte los valores de los bits dentro del rango especificado en una clave de TairRoaring, de 0 a 1 o de 1 a 0. El rango es un intervalo cerrado. Si la clave no existe, se crea como un conjunto de datos vacío y se ejecuta la operación sobre ella. |
Agregado en V2 |
||
|
|
Establece en 1 el valor del bit especificado en una clave de TairRoaring. Puede especificar varios valores de bits. Nota
En TairRoaring V2, se recomienda usar TR.SETBITS en lugar de este comando. |
- |
||
|
|
Crea una clave de TairRoaring basada en la matriz de enteros especificada. Si la clave ya existe, este comando sobrescribe los datos contenidos en ella. Nota
En TairRoaring V2, se recomienda usar TR.SETBITS en lugar de este comando. |
- |
||
|
|
Crea una clave de TairRoaring basada en la cadena de matriz de bits especificada. La cadena de matriz de bits consta de ceros y unos. Si la clave ya existe, este comando sobrescribe los datos contenidos en ella. Nota
En TairRoaring V2, se recomienda usar TR.APPENDBITARRAY en lugar de este comando. |
- |
||
|
|
Realiza operaciones de conjuntos sobre Roaring Bitmaps y almacena el resultado en destkey. El comando admite las operaciones AND, OR, XOR, NOT y DIFF. Nota
Este comando no está disponible para claves que residen en distintos slots en instancias de clúster. |
- |
||
|
|
Realiza una operación bit a bit sobre varias claves de TairRoaring. Se admiten las operaciones bit a bit AND, OR, XOR, NOT y DIFF. Nota
Este comando no está disponible para claves que residen en distintos slots en instancias de clúster. |
Agregado en V2 |
||
|
|
Optimiza el almacenamiento de una clave de TairRoaring. Si la clave es relativamente grande y se usa principalmente para operaciones de lectura después de su creación, puede ejecutar este comando. |
- |
||
|
Operación de lectura |
|
Recupera el valor del bit especificado de una clave de TairRoaring. |
- |
|
|
|
Recupera el valor del bit especificado de una clave de TairRoaring. Puede especificar varios bits para recuperar sus valores. |
Agregado en V2 |
||
|
|
Cuenta la cantidad de bits con valor 1 dentro del rango especificado en una clave de TairRoaring. El rango es un intervalo cerrado. |
Actualizado en V2 con compatibilidad hacia adelante. |
||
|
|
Recupera el desplazamiento del bit cuyo número ordinal es count. Un bit puede tener un valor de 1 o 0. El parámetro count es opcional y tiene un valor predeterminado de 1. Un valor de 1 indica el primer bit recuperado mediante el método de conteo de izquierda a derecha. |
Actualizado en V2 con compatibilidad hacia adelante. |
||
|
|
Explora todos los bits ubicados después de un bit especificado en una clave de TairRoaring y devuelve los desplazamientos correspondientes a un recuento de los bits explorados que tienen un valor de 1. El cursor devuelto es el desplazamiento correspondiente a la clave. Nota
Este comando podría explorar y devolver elementos agregados o eliminados, o no hacerlo. |
Agregado en V2 |
||
|
|
Devuelve los desplazamientos de los bits con valor 1 dentro del rango especificado en una clave de TairRoaring. El rango es un intervalo cerrado. |
Renombrado como TR.RANGE en V2; anteriormente TR.RANGEINTARRAY en V1. |
||
|
|
Recupera una cadena compuesta por valores de bits 0 y 1 dentro del rango especificado en una clave de TairRoaring. El rango es un intervalo cerrado. |
Agregado en V2 |
||
|
|
Recupera el desplazamiento del primer bit con valor 1 en una clave de TairRoaring. Si ningún bit tiene valor 1, se devuelve -1. |
- |
||
|
|
Recupera el desplazamiento del último bit con valor 1 en un Roaring Bitmap. Si ningún bit tiene valor 1, se devuelve -1. |
- |
||
|
|
Devuelve la información estadística de la clave de TairRoaring especificada. La información incluye la cantidad de contenedores y el uso de memoria. |
Agregado en V2 |
||
|
|
Recupera el coeficiente de similitud de Jaccard de dos claves de TairRoaring. Cuanto mayor sea el coeficiente, mayor será la similitud. Nota
Este comando no está disponible para claves que residen en distintos slots en instancias de clúster. |
Agregado en V2.2 |
||
|
|
Comprueba si key2 contiene a key1. En caso afirmativo, key1 es un subconjunto de key2 y se devuelve 1. De lo contrario, key1 no es un subconjunto de key2 y se devuelve 0. Nota
Este comando no está disponible para claves que residen en distintos slots en instancias de clúster. |
Agregado en V2.2 |
||
|
|
Recupera la cantidad de bits con valor 1 dentro del rango desde el primer bit hasta el bit especificado. El rango es un intervalo cerrado. |
Agregado en V2.2 |
||
|
Operación de propósito general |
|
Elimina una o más claves de TairRoaring. |
- |
-
La siguiente sección describe la sintaxis de los comandos:
Uppercase keyword: indica la palabra clave del comando.Italic text: indica variables.[options]: indica que los parámetros entre corchetes son opcionales. Los parámetros que no están entre corchetes deben especificarse obligatoriamente.A|B: indica que los parámetros separados por barras verticales (|) son mutuamente excluyentes. Solo se puede especificar uno de ellos....: indica que el parámetro anterior a este símbolo se puede especificar de forma repetida.
-
En este tema, las letras utilizadas en las expresiones de complejidad temporal tienen significados específicos:
C indica argc o el rango de parámetros.
M indica la cantidad de bits establecidos en 1 en una estructura de datos, como la cantidad de nodos en una lista o la cantidad de campos en un hash.
TR.SETBIT
|
Categoría |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(1) |
|
Descripción del comando |
Establece el bit especificado en una clave de TairRoaring con un valor de 1 o 0 y devuelve el valor original del bit. El desplazamiento comienza en 0. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.SETBITS
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C) |
|
Descripción del comando |
Establece en 1 el valor del bit especificado en una clave de TairRoaring. Puede especificar varios valores de bits. |
|
Opciones |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.CLEARBITS
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C) |
|
Descripción del comando |
Establece en 0 el valor del bit especificado en una clave de TairRoaring. Si el bit especificado ya tiene un valor de 0, no se realiza la operación. Puede especificar varios valores de bits. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.SETRANGE
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C) |
|
Descripción del comando |
Establece en 1 los bits dentro del rango especificado en una clave de TairRoaring. El rango es un intervalo cerrado. Por ejemplo, si ejecuta el comando |
|
Opciones |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.APPENDBITARRAY
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C) |
|
Descripción del comando |
Inserta un arreglo de bits en una posición posterior al bit especificado dentro de un Roaring Bitmap y sobrescribe los datos originales. El arreglo de bits se compone de ceros y unos. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Ejecute previamente el comando Comando de ejemplo:
Salida de ejemplo:
En este caso, la clave TairRoaring foo es "101101". |
TR.FLIPRANGE
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C) |
|
Descripción del comando |
Invierte los valores de los bits dentro del rango especificado en una clave TairRoaring, cambiando de 0 a 1 o de 1 a 0. El rango es un intervalo cerrado. Si la clave no existe, se crea como un conjunto de datos vacío y la operación se ejecuta sobre dicha clave. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Ejecute previamente el comando Comando de ejemplo:
Salida de ejemplo:
En este caso, la clave TairRoaring foo es "01001". |
TR.APPENDINTARRAY
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C) |
|
Descripción del comando |
Establece en 1 el valor del bit especificado en una clave TairRoaring. Es posible especificar varios valores de bits. Nota
En TairRoaring V2, se recomienda utilizar TR.SETBITS en lugar de este comando. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.SETINTARRAY
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C) |
|
Descripción del comando |
Crea una clave TairRoaring basada en el arreglo de enteros especificado. Si la clave ya existe, este comando sobrescribe los datos contenidos en ella. Nota
En TairRoaring V2, se recomienda utilizar TR.SETBITS en lugar de este comando. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.SETBITARRAY
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C) |
|
Descripción del comando |
Crea una clave TairRoaring basada en la cadena de arreglo de bits especificada. Dicha cadena se compone de ceros y unos. Si la clave ya existe, este comando sobrescribe los datos contenidos en ella. Nota
En TairRoaring V2, se recomienda utilizar TR.APPENDBITARRAY en lugar de este comando. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.BITOP
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C * M) |
|
Descripción del comando |
Ejecuta operaciones de conjuntos sobre Roaring Bitmaps y almacena el resultado en destkey. El comando admite las operaciones AND, OR, XOR, NOT y DIFF. Nota
Este comando no está disponible para claves que se encuentran distribuidas en varios slots de instancias de clúster. |
|
Opciones |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.BITOPCARD
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C * M) |
|
Descripción del comando |
Ejecuta una operación bit a bit sobre varias claves TairRoaring. Se admiten las operaciones bit a bit AND, OR, XOR, NOT y DIFF. Nota
Este comando no está disponible para claves que se encuentran distribuidas en varios slots de instancias de clúster. |
|
Opciones |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.OPTIMIZE
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(M) |
|
Descripción del comando |
Optimiza el almacenamiento de una clave TairRoaring. Ejecute este comando si la clave es relativamente grande y se utiliza principalmente para operaciones de lectura después de su creación. |
|
Opciones |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.GETBIT
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(1) |
|
Descripción del comando |
Recupera el valor del bit especificado de una clave TairRoaring. |
|
Opciones |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.GETBITS
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C) |
|
Descripción del comando |
Recupera el valor de los bits especificados de una clave TairRoaring. Puede especificar varios bits para recuperar sus valores. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.BITCOUNT
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(M) |
|
Descripción del comando |
Cuenta el número de bits con valor 1 dentro del rango especificado en una clave TairRoaring. El rango es un intervalo cerrado. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.BITPOS
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C) |
|
Descripción del comando |
Recupera el desplazamiento del bit cuyo número ordinal coincide con count. Un bit puede tener un valor de 1 o 0. El parámetro count es opcional y tiene un valor predeterminado de 1. Un valor de 1 indica el primer bit recuperado mediante el enfoque de conteo de izquierda a derecha. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.SCAN
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C) |
|
Descripción del comando |
Explora todos los bits ubicados después de un bit especificado en una clave TairRoaring y devuelve los desplazamientos correspondientes a un recuento de los bits explorados que tienen un valor de 1. El cursor devuelto es el desplazamiento correspondiente a la clave. Nota
Es posible que este comando explore y devuelva, o no, elementos agregados o eliminados. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.RANGE
|
Categoría |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C) |
|
Descripción del comando |
Devuelve los desplazamientos de los bits que tienen un valor de 1 dentro del rango especificado en una clave TairRoaring. El rango es un intervalo cerrado. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Ejecute previamente el comando Comando de ejemplo:
Salida de ejemplo:
|
TR.RANGEBITARRAY
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(C) |
|
Descripción del comando |
Recupera una cadena compuesta por valores de bit de 0 y 1 dentro del rango especificado en una clave TairRoaring. El rango es un intervalo cerrado. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Ejecute previamente el comando Comando de ejemplo:
Salida de ejemplo:
|
TR.MIN
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(1) |
|
Descripción del comando |
Recupera el desplazamiento del primer bit con valor 1 en una clave TairRoaring. Si ningún bit tiene un valor de 1, se devuelve un valor de -1. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.MAX
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(1) |
|
Descripción del comando |
Recupera el desplazamiento del último bit con valor 1 en un Roaring Bitmap. Si ningún bit tiene un valor de 1, se devuelve -1. |
|
Opciones |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.STAT
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(M) |
|
Descripción del comando |
Devuelve la información estadística de la clave TairRoaring especificada. Esta información incluye el número de contenedores y el uso de memoria. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.JACCARD
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(M) |
|
Descripción del comando |
Obtiene el coeficiente de similitud de Jaccard de dos claves TairRoaring. Cuanto mayor sea el coeficiente, mayor será la similitud. Nota
Este comando no está disponible para claves que residen en distintos slots de instancias de clúster. |
|
Parámetro |
|
|
Salida |
|
|
Ejemplo |
Comando de ejemplo:
Salida de ejemplo:
|
TR.CONTAINS
|
Categoría |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(M) |
|
Descripción del comando |
Comprueba si key2 contiene a key1. En caso afirmativo, key1 es un subconjunto de key2 y se devuelve un valor de 1. De lo contrario, key1 no es un subconjunto de key2 y se devuelve un valor de 0. Nota
Este comando no está disponible para claves que residen en distintos slots de instancias de clúster. |
|
Opciones |
|
|
Salida |
|
|
Ejemplo |
Ejecute previamente los comandos Comando de ejemplo:
Salida de ejemplo:
|
TR.RANK
|
Elemento |
Descripción |
|
Sintaxis |
|
|
Complejidad temporal |
O(M) |
|
Descripción del comando |
Obtiene el número de bits con valor 1 dentro del rango comprendido entre el primer bit y el bit especificado. El rango es un intervalo cerrado. |
|
Opciones |
|
|
Salida |
|
|
Ejemplo |
Ejecute previamente el comando Comando de ejemplo:
Salida de ejemplo:
|
Mensajes de error
|
Mensaje de error |
Descripción |
|
|
Tipo de objeto incorrecto: la clave no es un objeto TairRoaring. |
|
|
Tipo de parámetro incorrecto: los valores del parámetro no se pueden convertir en enteros de 32 bits. |
|
|
Parámetros no válidos:
|
|
|
La clave TairRoaring ya existe y sus datos no se pueden sobrescribir. Nota
Este error se corrigió en TairRoaring V2.2. |
|
|
El objeto Roaring Bitmap no existe. Esta operación no es compatible. Nota
Este error se corrigió en TairRoaring V2.2. |