01 Redis

01 Redis

Redis es una base de datos remota en memoria, que no solo tiene un rendimiento sólido, sino que también tiene características de replicación y un modelo de datos único para resolver problemas. Redis proporciona 5 tipos diferentes de estructuras de datos, y varios problemas pueden asignarse naturalmente a estas estructuras de datos. A través de la replicación, la persistencia, el fragmentación del lado del cliente y otras características, los usuarios pueden expandir fácilmente Redis en un sistema que puede contener cientos de GB de datos y procesar millones de solicitudes por segundo.

1.1 Introducción a Redis

Redis es una base de datos no relacional muy rápida (base de datos no relacional). Puede almacenar asignaciones entre claves y 5 tipos diferentes de valores. Puede almacenar claves almacenadas en la memoria. Los datos de pares de valores se conservan en el disco duro, y las características se pueden copiar para ampliar el rendimiento de lectura, y el fragmentación del lado del cliente también se puede utilizar para ampliar el rendimiento de escritura.

Redis frente a otras bases de datos o software

En comparación con la asociación de dos tablas en una base de datos relacional, Redis no usa tablas, y su base de datos no predefinirá ni forzará a los usuarios a asociar datos diferentes en Redis;

El servidor de caché de valor clave de alto rendimiento memcached a menudo se compara con Redis:

  • Ambos pueden usarse para almacenar mapas de valores clave, y su rendimiento es casi el mismo;
  • Pero Redis puede escribir datos automáticamente en el disco de dos maneras diferentes;
  • Además de almacenar claves de cadena ordinarias, Redis también puede almacenar otras cuatro estructuras de datos, mientras que memcached solo puede almacenar claves de cadena ordinarias.

Estas diferencias permiten que Redis se use para resolver una gama más amplia de problemas, y puede usarse tanto como una base de datos primaria (base de datos primaria) como una base de datos auxiliar para otros sistemas de almacenamiento (base de datos auxiliar).

En general, muchos usuarios solo usarán Redis cuando sea necesario el rendimiento o la funcionalidad de Redis. Los lectores deben decidir si usar Redis de acuerdo con sus propias necesidades, y considerar si usar Redis como almacenamiento primario o almacenamiento auxiliar, y cómo garantizar la integridad de los datos a través de medios como la replicación, la persistencia y las transacciones.

El nombre Tipo Opciones de almacenamiento de datos Tipo de consulta Funciones adicionales
Redis Base de datos no relacional usando en memoria Cadenas, listas, colecciones, tablas hash, colecciones ordenadas Cada tipo tiene su propio comando exclusivo, además de la operación masiva (operación parcial) y el soporte de transacciones parciales (parciales) Publicación y suscripción, replicación maestro / esclavo (replicación maestro / esclavo), persistencia, script (procedimiento almacenado, procedimiento almacenado)
Memcached Almacenamiento en caché de valores clave mediante almacenamiento de memoria Mapeo clave-valor Crear comando, leer comando, actualizar comando, eliminar comando y varios otros comandos Servidor multiproceso para mejorar el rendimiento
Mysql Base de datos relacional Cada base de datos puede contener múltiples tablas de datos, cada tabla puede contener múltiples filas; puede manejar vistas de múltiples tablas; admite espacio y expansión de terceros SELECCIONAR, ACTUALIZAR, INSERTAR, ELIMINAR, función, procedimiento almacenado Admite la naturaleza ACID (requiere InnoDB), replicación maestro-esclavo y replicación maestro-maestro
MongoDB Almacenamiento de documentos no relacionales utilizando almacenamiento en disco Cada base de datos puede contener múltiples tablas, y cada tabla puede contener múltiples documentos BSON sin esquema Crear comando, leer comando, actualizar comando, eliminar comando, comando de consulta condicional, etc. Admite operaciones de reducción de mapas, replicación maestro-esclavo, fragmentación, índice espacial

Características adicionales

Resistencia:

Cuando se usa una base de datos en memoria como Redis, uno de los primeros problemas a considerar es "¿A dónde irán los datos almacenados por el servidor cuando el servidor se apague?"

Redis tiene dos métodos diferentes de persistencia: pueden escribir datos almacenados en la memoria en el disco duro en un formato pequeño y compacto.

El primer tipo es el volcado de punto en el tiempo. La operación de volcado se puede realizar cuando se cumple la condición de que "se cumple el número especificado de operaciones de escritura dentro de un período de tiempo especificado", o llamando a dos Cualquiera de los comandos de disco duro descargados para ejecutar;

El segundo método de persistencia escribe todos los comandos modificados de la base de datos en un archivo de solo agregado.Los usuarios pueden configurar la escritura de solo agregar para que nunca se sincronice, se sincronice una vez por segundo o escriba cada vez según la importancia de los datos. Sincronice una vez cuando ingrese un comando.

Replicación maestro-esclavo:

Además, aunque Redis tiene un buen rendimiento, está limitado por el diseño de almacenamiento de memoria y, a veces, un servidor Redis puede no ser capaz de procesar todas las solicitudes. Para ampliar el rendimiento de lectura de Redis y proporcionar soporte de conmutación por error para Redis, Redis implementa la función de replicación maestro-esclavo.

Replicación maestro-esclavo: el servidor esclavo que realiza la replicación se conectará al servidor maestro y aceptará la copia de toda la base de datos enviada por el servidor maestro; luego, los comandos de escritura ejecutados por el servidor maestro se enviarán a todos los servidores esclavos conectados para su ejecución, actualizando así en tiempo real El conjunto de datos del servidor. Debido a que los datos contenidos en el servidor esclavo se actualizan continuamente, el cliente puede enviar una solicitud de lectura a cualquier servidor esclavo para evitar el acceso centralizado al servidor maestro.

Razones para usar Redis

  • El método adoptado por Memcached para eliminar elementos es ocultar los elementos en la lista a través del mecanismo de la lista negra (lista negra), evitando así las operaciones de lectura, actualización y escritura de elementos. Por el contrario, Redis LIST y SET permiten a los usuarios agregar directamente o Eliminar el elemento.
  • El uso de Redis no solo hace que el código sea más conciso, más fácil de entender y más fácil de mantener, sino que también hace que el código se ejecute más rápido (porque los usuarios no necesitan leer la base de datos para actualizar los datos). Además, Redis es mucho más eficiente y fácil de usar que las bases de datos relacionales.
  • La base de datos es una operación muy lenta para actualizar las filas en la tabla. Además de causar una lectura aleatoria, también causará una escritura aleatoria. En Redis, los usuarios pueden usar directamente el comando atómico INCR y sus variantes para calcular los datos agregados, y debido a que Redis almacena datos en la memoria, y la solicitud enviada a los comandos de Redis no necesita pasar por el analizador de consultas clásico y el optimizador de consultas Procesamiento, por lo que la velocidad de realizar escrituras aleatorias en los datos almacenados por Redis es muy rápida.
  • Además, debido a que Redis no es una base de datos relacional u otra base de datos de almacenamiento en disco duro, puede evitar escribir datos temporales innecesarios y evitar el problema de escanear o eliminar datos temporales y, en última instancia, mejorar el rendimiento del programa.

1.2 Introducción a la estructura de datos de Redis

Redis puede almacenar asignaciones entre claves y 5 tipos diferentes de estructura de datos, a saber, cadena, lista, conjunto, hash y zset. Algunos comandos son comunes a estas cinco estructuras de datos, como del, type, rename, etc., pero también hay algunos comandos de Redis que solo se pueden usar para una o dos estructuras.

Tipo de estructura Estructura de valor almacenado Estructura de alfabetización
cuerda Cadena, número entero, coma flotante Realice operaciones en cadenas enteras o partes de cadenas; realice operaciones de incremento o decremento en enteros y números de punto flotante
lista Una lista vinculada, cada nodo en la lista vinculada contiene una cadena Empuje o extraiga elementos de ambos extremos de la lista vinculada; recorte la lista vinculada de acuerdo con el desplazamiento; lea elementos únicos o múltiples; encuentre o elimine elementos basados ​​en valores
conjunto Un recopilador desordenado que contiene cadenas, y cada cadena que se incluye es única y diferente. Agregue, obtenga y elimine elementos individuales; verifique si existe un elemento en el conjunto; calcule la intersección, la unión y la diferencia. Obtenga elementos al azar de la colección.
picadillo Tabla hash desordenada que contiene pares clave-valor Agregue, obtenga y elimine un solo par clave-valor; obtenga todos los pares clave-valor
simbólico Mapeo ordenado entre miembros de cadena y puntajes de punto flotante, el orden de los elementos está determinado por el tamaño del puntaje Agregue, obtenga y elimine elementos individuales; obtenga elementos basados ​​en el rango de puntuación o miembros

Nota:

  1. Lo siguiente usará el entorno simple de Redis creado por Docker, y usará redis-cli para una interacción de comando simple. El proceso de inicio de Docker Redis se muestra en el apéndice al final de este artículo.
  2. Las siguientes son las operaciones más simples de las cinco estructuras de datos.

Cadena en Redis

Comando Comportamiento
obtener Obtenga el valor almacenado en la clave
conjunto Establecer el valor almacenado en la clave
del Eliminar el valor almacenado en la clave dada

Inserte la descripción de la imagen aquí

Lista en Redis

Una estructura de lista puede almacenar múltiples cadenas en orden.

Comando Comportamiento
rpush Empuje el valor especificado al extremo derecho de la lista, el comando devuelve la longitud actual de la lista
lrange Obtenga todos los valores de la lista en el rango dado. Use 0 como índice inicial y -1 como índice final para extraer todos los elementos
lindex Extraer un solo elemento de acuerdo con el índice
lpop Pop un valor del extremo izquierdo de la lista y devuelve el valor emergente

Inserte la descripción de la imagen aquí

Ubicado en Redis

Tanto las colecciones como las listas de Redis pueden almacenar múltiples cadenas. La diferencia entre ellas es que las listas pueden almacenar múltiples cadenas idénticas, mientras que las colecciones usan tablas hash para garantizar que cada cadena que almacenan sea diferente. Lo mismo (estas tablas hash tienen solo claves y ningún valor asociado con las claves).

Comando Comportamiento
triste Agrega el elemento especificado a la colección
huele Devuelve todos los elementos contenidos en la colección.
sismember Comprueba si el valor dado existe en la colección
srem Si el elemento dado existe en la colección, elimine el elemento

Además de las operaciones básicas de adición y eliminación, los conjuntos también admiten muchas otras operaciones, como sinterización, luz solar y sdiff. Estos tres comandos pueden realizar operaciones de intersección, operaciones de unión y operaciones de diferencia, respectivamente.

Operación básica:
Inserte la descripción de la imagen aquí

Tabla hash hash en Redis

Los hash de Redis pueden almacenar asignaciones entre múltiples pares clave-valor. El valor almacenado en el hash puede ser una cadena o un número, y los usuarios también pueden aumentar y disminuir sus valores numéricos.

Hashing es similar a una versión en miniatura de Redis en muchos sentidos.

Comando Comportamiento
hget Obtener el valor de la clave hash especificada
hset Asociar un par clave-valor dado en el hash
hgetall Obtenga todos los pares clave-valor contenidos en el hash
hdel Si la clave dada existe en el hash, elimine la clave

Operación básica:

Inserte la descripción de la imagen aquí

Colección ordenada zset en Redis

Al igual que los hashes ordenados, los conjuntos ordenados se utilizan para almacenar pares clave-valor:

Las claves de un conjunto ordenado se denominan miembros (menber), y cada miembro es diferente;

El valor de un conjunto ordenado se denomina puntuación, que debe ser un número de coma flotante.

Una colección ordenada es la única estructura en Redis que puede acceder a elementos basados ​​en miembros, y también puede acceder a elementos basados ​​en puntajes y el orden en que se organizan los puntajes.

Comando Comportamiento
zadd Agregar un miembro con una puntuación dada a una colección ordenada
Zrange Según la posición del elemento en el conjunto ordenado, obtenga múltiples elementos del conjunto ordenado
zrangebyscore Obtenga todos los elementos de una colección ordenada dentro de una puntuación determinada
zrem Si un miembro determinado existe en un conjunto ordenado, elimínelo

Operación básica:
Inserte la descripción de la imagen aquí

1.3 Resumen simple

Redis es una herramienta que se puede utilizar para resolver problemas. , Tiene una estructura de datos que otras bases de datos no tienen, y almacenamiento de memoria (lo que hace que Redis sea muy rápido), remoto (que le permite a Redis conectarse con múltiples clientes y servidores) y persistencia (que le permite al servidor Después de reiniciar, se mantienen los datos antes de reiniciar) y la escalabilidad (a través de replicación y fragmentación maestro-esclavo) y otras características, lo que permite a los usuarios crear soluciones a diferentes problemas de una manera familiar.

Cambio de pensamiento:

"Cómo agrupar mis ideas en las tablas y filas de la base de datos" cambiará a: "Qué estructura de datos de Redis se utiliza para resolver este problema es mejor".

1.4 Apéndice: Redis de inicio simple en Docker

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin www.cnblogs.com/kjgym/p/12757949.html
Recomendado
Clasificación