Red de conocimiento informático - Problemas con los teléfonos móviles - Cadena dinámica de Redis

Cadena dinámica de Redis

Nota: Cuando la longitud de la cadena no es inferior a 44, el tipo es tipo sin formato

Entre ellos:

El tamaño de la estructura SDS

El tamaño de SDS es: 1+1+1+?, por lo que el tamaño mínimo de un SDS es de 3 bytes. Por lo tanto, el tamaño de una cadena de datos en redis es al menos 16+3 bytes y 19 bytes.

La unidad del asignador de memoria para dividir el tamaño de la memoria es una potencia de 2: 2/4/8/16/32/64. Para acomodar una cadena completa, se necesitan al menos 32. Espacio de bytes asignado. Si la cadena es un poco más grande, tendrá 64 bytes de espacio. Si el total excede los 64 bytes, Redis la considera una cadena grande y ya no la almacena en formato emdstr, sino en formato sin formato.

¿Por qué Redis lo trata como sin formato cuando supera los 64 bytes o por qué se vuelve sin formato cuando la longitud de la cadena es 44?

En primer lugar, sin formato se refiere a la cadena dinámica de Redis. es un contenedor de radis para cadenas nativas en lenguaje C. La última cadena del lenguaje C nativo siempre termina en \0, para facilitar el uso del procesamiento de funciones de cadena de glibc y facilitar la salida de impresión. ocupado) = 45 cadenas. La cadena termina en \0, por lo que la longitud máxima de cadena que embstr puede acomodar es 44.