Diseño y realización de la Redis originales - estructura de datos para lograr los objetos (cinco) Redis

objetos

       No ReDiS directamente por encima de varias estructuras de datos implementadas base de datos kv, pero serán una combinación de diferentes objetos. objeto clave y objetos de valor.

estructura de datos de objeto definen como sigue: (zConfigurar conjunto ordenado)

La siguiente es la relación entre tipos de objetos y aplicación de:

Cadena objetos --String

  1. Cuando un número entero de menos de 32 bits (cuatro bytes PORQUE ptr *) se almacena int
  2. Cuando menos de 32 bytes cadena: embstr (número de coma flotante se almacena como una cadena)
  3. Cuando mayor que 32 bytes de prima

    Así embstr y crudo así que ¿qué más da?  

  1. Embstr optimizado, asignado sólo una vez, buena OBJ asignar memoria y SDS usados
  2. Ibid., Liberar necesidad de memoria sólo se libera una vez ~
  3. sds Obj y distribución continua, se carga con la carga, que será más rápido

Además, la cadena por encima de los tres modos diferentes convertirá automáticamente entre sí cuando sea necesario, pero tenga en cuenta embstr de hecho esencialmente un objeto de sólo lectura cambios en su primero convertirlo en crudo

Lista de objetos --list

       LinkedList o ZipList, respectivamente, como se muestra a continuación ( de cadena objeto es los únicos otros objetos pueden ser objetos anidados )

     ¿Cómo estos dos códigos a elegir?

              ZipList:

                    1. La longitud de cada elemento es menor de 64 bytes

                    2. El número de elementos es menor que 512

                   El resto se utiliza LinkedList, las condiciones anteriores no se cumplen serán seleccionados en LinkedList

objeto hash

       ZipList o tabla hash (diccionario)

       valores delanteros y traseros clave ZipList, comenzando en el extremo de la mesa. Hashtable aspirado clave y el valor son los objetos de cadena

       Cuándo utilizar ZipList

  1. Todas las claves y los valores están a menos de 64 bytes
  2. Número es inferior a 512

Las conversiones anteriormente.

conjunto de objetos

       Intset o una tabla hash (el valor es nulo)

       Al utilizar intset?

  1. Todos los elementos son valores enteros
  2. El número de elementos es no más de 512

Conversiones Ibid.

conjunto ordenado

       ZipList o a + Diccionario skipList

       ¿Por qué utilizar skipList + diccionario de ella?

              En primer lugar, skiplist y diccionario objetos compartidos elementos, por lo que la situación no se produce pérdida de memoria, seguido con el fin de lograr y encontrar el valor del elemento especificado para encontrar la complejidad del tiempo de un rango son relativamente pequeñas, por lo que el uso de una combinación de ambos

      Shashi Hou con ZipList?

  1. El número de elementos es menor que 128
  2. Cada elemento de una longitud de menos de 64 bytes

Conversiones Ibid.

 

Publicado 47 artículos originales · ganado elogios 8 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/nanchengyu/article/details/89321250
Recomendado
Clasificación