La Red de Conocimientos Pedagógicos - Currículum vitae - Solución de cola multiconsumidor de Redis

Solución de cola multiconsumidor de Redis

Primero use el comando XADD en Redis-cli para insertar un dato

Ver la codificación del objeto

Puede ver que el tipo de datos del objeto es una secuencia y el ID de secuencia devuelto es La estructura básica es "{timestamp}-{sequence}"

Utilice el comando XINFO para ver la información básica de la clave de secuencia

Puede Vea que se utiliza un "árbol de base" en la estructura de datos del flujo.

Almacenamiento de las palabras anteriores mediante el árbol Radix

Al insertar primero

En comparación con los árboles de diccionario ordinarios, los árboles Radix comprimirán las ramas de un solo nodo en un solo nodo para ahorre espacio de almacenamiento y mejore la eficiencia de la búsqueda. En la estructura Streams, el StreamID generado de forma predeterminada tiene la forma de una marca de tiempo con un número de secuencia de incremento automático. Cuando la distribución temporal de los mensajes es compacta, los prefijos multiplexados de múltiples StreamID en esta estructura de almacenamiento serán muy largos. Puede comprimir el espacio de almacenamiento a un tamaño muy pequeño, lo cual es importante para Redis, que usa memoria para almacenar datos. Otra ventaja de los árboles Radix es que resuelve el problema de los conflictos hash. Para estructuras hash generales, cuando se encuentra un conflicto hash, el método de dirección en cadena generalmente se usa para resolver el conflicto. La cadena en dicha ranura hash puede ser muy larga. Si se adopta la expansión, la eficiencia de ejecución generalmente no es muy alta. El uso de una estructura de árbol para indexar datos resuelve el problema del conflicto de hash. Por supuesto, el árbol Radix también encontrará el problema de la división de nodos de datos cuando encuentre datos recién insertados.

Stream es una estructura de datos que solo se agrega y solo el comando del puede eliminar la clave correspondiente.

Especifique la longitud máxima de los datos agregados (~ significa que los datos solo se borrarán cuando se elimine el nodo, lo que puede garantizar que la longitud máxima de la cantidad de datos no sea inferior a LONGITUD. Hay no es necesario ajustar el árbol Radix cada vez y el rendimiento es relativamente bueno)

Tipo de bloqueo, obtiene el último dato (unidad de bloqueo: ms)

Según los comandos compatible con Streams, para utilizar Streams como una cola de múltiples consumidores, los puntos principales son los siguientes:

Introducción al sitio web oficial

Introducción al comando del sitio web oficial chino

Estructura de datos de Redis ilustrada y mejor explicada

Introducción a la solución de cola de mensajes de Redis basada en Zhihu