Solución de cola multiconsumidor de Redis
Verifique la codificación del objeto
Puede ver que el tipo de datos del objeto es una secuencia, y el básico La estructura del streamID devuelto es "{timestamp} -{sequence}"
Utilice el comando XINFO para ver esta clave de flujo
Puede ver que el flujo usa el "radix-tree "estructura de datos.
Almacenamiento en árbol Radix de las palabras anteriores
Al insertar la primera palabra
En comparación con los árboles de diccionario ordinarios, los árboles Radix comprimen ramas de nodos individuales en un solo nodo. para ahorrar espacio de almacenamiento y mejorar la eficiencia de la búsqueda. En la estructura de Streams, el StreamID generado de forma predeterminada tiene la forma de marca de tiempo + número de secuencia de aumento automático. Cuando la distribución temporal de los mensajes es relativamente compacta, la estructura de almacenamiento de múltiples prefijos de reutilización de StreamID será muy larga y se podrá comprimir. uno pequeño. Espacio de almacenamiento, que es muy importante para usar la memoria para almacenar datos en Redis. Otra ventaja del árbol Radix es que resuelve el problema de las colisiones de hash. Para estructuras hash generales, cuando se encuentra un conflicto hash, generalmente se usa el método de dirección en cadena para resolver el conflicto. La cadena en dicha ranura hash puede ser muy larga y, si se utilizan métodos de extensión, la eficiencia de ejecución generalmente no es muy alta. El uso de una estructura de árbol para indexar datos puede resolver problemas de colisión 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 nuevos (~ significa que los datos solo se borrarán cuando se elimine el nodo. Esto puede garantizar que la longitud máxima de la cantidad de datos no sea menor que LONGITUD, y no No es necesario ajustar el árbol Radix cada vez. El rendimiento es relativamente bueno).
Bloqueo, obtención de los últimos 1 datos (unidad de bloqueo: ms)
De acuerdo con los comandos admitidos por Streams, para utilizar Streams como una cola de múltiples consumidores, los puntos principales son los siguientes siguiente:
p>Sitio web oficial
Introducción al comando del sitio web oficial chino
Diagrama de estructura de datos de Redis, explicado mejor
Mensaje de Redis basado en Zhihu Introducción a la solución de cola