algoritmo real (A): Análisis Redis datos comunes correspondiente al tipo de estructura de datos

algoritmo real (A): Análisis Redis datos comunes correspondiente al tipo de estructura de datos

tipos de datos comunes en la base de datos Redis, ¿cuáles son las estructuras de datos subyacentes a lograr?

la base de datos Redis Introducción

Redis es un (valor-clave) de base de datos, bases de datos no relacionales, clave con respecto a la estructura de una base de datos relacional como MySQL, las tablas de MySQL es más complejo, que contiene muchos campos, las sentencias SQL pueden lograr la misma complejidad de los requisitos de consulta, Redis Sólo contiene "clave", "valor" en dos partes, y sólo a buscar valores de clave, por lo que la lectura y la escritura eficiencia es muy alta Redis

Redis se utiliza principalmente como una base de datos en memoria que los datos están en la memoria, también es compatible con los datos almacenados se almacena en el disco duro

Redis, el tipo de datos de la clave es una cadena, con el fin de enriquecer el modo de almacenamiento de datos, una gran cantidad de valores de tipo de datos, cadenas, listas, diccionarios, set, conjunto ordenado

listado

El almacenamiento de una lista de conjunto de datos compatible, correspondiente a la lista de los dos métodos, uno se comprime lista ZipList, el otro es un bidireccional lista enlazada circular

Cuando una pequeña cantidad de datos almacenados en la lista cuando la lista es a modo de compresión, pero necesidad de satisfacer dos condiciones: una única lista de datos almacenados menos de 64 bytes, los datos de lista número es inferior a 512. La compresión es una lista de estructuras de almacenamiento de datos REDIS diseño propio, similar a la matriz, los datos se almacenan por un espacio de memoria contigua, permitiendo diferentes tamaños de almacenamiento de datos. Lista de embalaje ahorrar memoria, y apoyar a los diferentes tipos de almacenamiento de datos, sino también porque los datos se almacenan en un espacio de memoria continua para conseguir a través clave de alto valor Tipo de lista de datos de la eficiencia

Cuando una gran cantidad de datos almacenados en la lista, la necesidad se logra mediante la forma lista enlazada circular, una estructura de lista se define, además, para organizar la primera lista, el puntero de cola, y la información de longitud

typedef struct listnode{
	struct listNode *prev;
	struct listNode *next;
	void *value;
}listNode;

typedef struct list{
	listNode *head;
	listNode *tail;
	unsigned long len;
	//……
}list;

Diccionario (hash)

Un diccionario para almacenar un conjunto de pares de datos, cada par de datos que comprende una llave y dos, hay dos tipos de diccionarios implementaciones, un segundo es comprimen tabla de lista de hash.

Cuando una pequeña cantidad de datos almacenados cuando la compresión Redis utiliza solamente para implementar una lista de diccionario, también tienen que cumplir con dos condiciones: un valor clave de almacenamiento de diccionario y de un tamaño menor que 64 bytes, la segunda es la clave para el diccionario el número es inferior a 512, o tenemos que utilizar una tabla hash para implementar un diccionario, el algoritmo de hash Redis usando MurmurHash2 como una función hash para el conflicto de hash, Redis utilizando el método de la lista de resolver, pero también es compatible con la expansión dinámica de la tabla hash , reducción de volumen

Cuando aumenta de datos dinámicas, el factor de carga de la tabla de dispersión aumenta, cuando el factor de carga es mayor que 1, la expansión de disparo Redis, expandir la tabla hash es 2 veces el tamaño original, después de la reducción de los datos, cuando el factor de carga es menor que 0,1, reducción de volumen de activación Redis, reducido a 2 veces el tamaño de la cantidad de datos de diccionario. Utilice la expansión progresiva de la estrategia de reducción de volumen, se moverán los datos en lotes para evitar un movimiento de una sola vez una gran cantidad de servicios de datos se detienen debido

Colección (conjunto)

Para almacenar un conjunto de datos únicos, tipo de datos tiene dos métodos, uno se basa en una serie ordenada, la segunda se basa en una tabla hash, cuando los datos a ser almacenados en ambas de las siguientes condiciones cuando, por el Redis una ordenada matrices para poner en práctica un conjunto de tipos de datos, o los datos Redis en el uso de la tabla hash para almacenar la colección

  • Los datos almacenados son números enteros
  • El número de elementos de datos almacenados en no más de 512

Ordenado conjunto SortedSet

Para almacenar un conjunto de conjunto ordenado de datos, y cada uno de datos se proporciona con una puntuación, la puntuación por el tamaño de los datos organizados en una tabla de saltos, para apoyar las puntuaciones Accordance rápidos, el intervalo de adquisición de datos puntuación

Cuando una pequeña cantidad de datos cuando, Redis utilizará la compresión para conseguir una lista de conjunto ordenado, utilice la lista para lograr la premisa de compresión ha ordenado colección

  • Todo el tamaño de los datos es menos de 64 bytes
  • El número de elementos es menor que 128

estructuras de datos persistentes

Redis es tratado como base de datos en memoria, pero también es compatible con los datos fuera del disco, se trata de almacenamiento de datos de memoria en el disco duro, si el fallo de alimentación cuando los datos no se perderán después de la reanudación, Redis justo en ese momento almacenados en los datos del disco duro releer se puede seguir tomando la memoria de trabajo, el formato de datos Redis de la "llave" y "valor" de dos partes, y las de apoyo valor muchos tipos de datos, tales como cadenas, listas, conjuntos, conjunto ordenado. Al igual que el tipo de diccionarios, colecciones, etc., utilizado en la tabla hash subyacente, tabla hash el concepto de un puntero que apunta a una dirección de memoria en la memoria, Redis Forma de guardar una dirección de memoria asociada a las estructuras de datos específica en el disco?

problema persistente conocida estructura de datos o problemas persistentes de objetos, almacenamiento persistente a = disco

Cómo el disco persistente estructuras de datos?

En primer lugar, eliminar la estructura de almacenamiento existente, sólo los datos almacenados en el disco, cuando tenemos que restaurar los datos desde el disco cuando la memoria se re-organización de los datos en la estructura de datos original, Redis se utiliza en esta idea, pero los datos restaurar el disco duro a la memoria del proceso, consumen más tiempo

En segundo lugar, que conserva el formato de almacenamiento original, de acuerdo con los datos almacenados en el formato original en el disco. Podemos hash de tamaño de la lista, la información para cada dato que sea el número de ranura hash, etc., se almacena en el disco, con esta información para evitar la re-calcular el valor hash

Publicado 75 artículos originales · ganado elogios 9 · vistas 9163

Supongo que te gusta

Origin blog.csdn.net/ywangjiyl/article/details/104893053
Recomendado
Clasificación