Un artículo que resume los puntos de conocimiento de Redis.

¿Por qué apareció Redis nuevamente basado en MySQL? ¿Cuáles son las ventajas de Redis?

  • MySQL se basa en IO de disco y Redis se basa en memoria.
    La velocidad de lectura y escritura de la memoria es mucho más rápida que la velocidad de lectura y escritura del disco IO, lo que puede mejorar enormemente el rendimiento.

  • ventaja: Basado en la memoria, tiene un alto rendimiento, admite una amplia gama de tipos de datos, admite todos los lenguajes de programación convencionales como Python, Java, etc., admite la persistencia de datos (mecanismo ROB AOF), admite la replicación maestro-esclavo, admite modo de clúster y admite el modo centinela.

  • Redis es una base de datos no relacional en formato clave-valor

Comandos básicos compatibles con Redis

  • SET agrega pares clave-valor
  • GET obtiene el par clave-valor
  • EXISTS consulta pares clave-valor
  • DEL eliminar par clave-valor
  • FLUSHALL elimina todas las claves
  • LLAVES * Consultar todas las claves
  • Tiempo de vencimiento de la clave de vista TTL
  • EXPIRE establece el tiempo de vencimiento de la clave

Estructuras de datos soportadas por Redis

1 cuerda

  • Redis usa String para el almacenamiento de forma predeterminada.
  • Todos los comandos de cadena son consistentes con los comandos básicos.

2 lista

  • La estructura de datos subyacente es un deque.
  • Los comandos comienzan con L
  • Comandos únicos: LPUSH (poner en cola desde la izquierda) LPOP (poner en cola desde la izquierda) LRANGE (generar la cola desde la izquierda) LLEN (longitud de la cola) LTRIM (conservar algunos elementos de la cola desde la izquierda) RPUSH (poner en cola desde la derecha) …

3 juegos

  • Conjunto de deduplicación desordenado
  • Los comandos comienzan con S
  • Comandos únicos: SADD (agregar elemento) SREM (eliminar elemento) SISMEMBER (consultar elemento)
  • Soporte de operaciones de conjunto, intersección y unión, etc.

4 juegos ordenados

  • Conjunto de deduplicación ordenado
  • Los comandos comienzan con Z
  • Cada elemento en Zset está asociado con una puntuación de tipo punto flotante y luego los elementos se ordenan según la puntuación de menor a mayor.
  • Los elementos en Zset son únicos, pero se pueden duplicar fracciones de elementos
  • Comando único: tecla ZRANGE 0 -1 CONPUNTUACIONES (genera todos los miembros + puntuaciones) ZRANK (ver la clasificación de los miembros de menor a mayor)

5 hachís

  • Los comandos comienzan con H
  • Redis en sí es un par clave-valor, lo que equivale a que el valor en el par clave-valor sea un par clave-valor.

6 cola de mensajes de flujo

  • Los comandos comienzan con X
  • Comando único: grupo de consumidores y crear consumidores) XINFO (ver información del grupo de consumidores)

7 Geoespacial Geoespacial

  • Nuevas características de la versión Redis3.2
  • Una estructura de datos especialmente utilizada para almacenar información de ubicación geográfica.
  • Los comandos comienzan con GEO
  • Apoyar las operaciones de cálculo de ubicación geográfica.
  • Comandos únicos: GEOPOS (encontrar la longitud y latitud de una ciudad) DEODIST (calcular la distancia en línea recta desde una ciudad) GEOSEARCH (consultar ciudades dentro de un rango determinado centrado en una ciudad determinada)

8 mapa de bits mapa de bits

  • Una matriz de 01, el subíndice representa el desplazamiento
  • El comando comienza con BIT.
  • Operaciones de bits de soporte
  • Escenarios aplicables: registrar el estado de registro del usuario, el estado en línea y si les gusta o no

Campo de bits de 9 bits

  • Los comandos comienzan con BITFIELD
  • Escenarios aplicables: grabar información del jugador del juego

10 HyperLogRegistro

  • Un algoritmo para realizar estadísticas de cardinalidad, es decir, calcular el número de elementos únicos en un conjunto.
  • Los comandos comienzan con PF
  • Principio: algoritmo aleatorio
  • Ventajas: ocupa poca memoria
  • Desventajas: hay errores.
  • Escenarios aplicables: trabajo estadístico que no requiere alta precisión pero tiene una gran cantidad de datos, como contar el número de búsquedas de una determinada palabra.

¿Redis es de un solo subproceso o de varios subprocesos?

  • Redis siempre ha tendido a utilizar un solo subproceso, lo que evita el cambio frecuente de subprocesos, que es una de sus ventajas.
  • Antes de 4.0, era completamente de un solo subproceso.
  • Después de 4.0, el subproceso principal es de un solo subproceso y también hay subprocesos en segundo plano (procesamiento de datos sucios, liberación de enlaces inútiles, eliminación de claves grandes, etc.)
  • Después de 6.0, la ejecución de comandos es de un solo subproceso y hay otros subprocesos (procesamiento de lectura y escritura de datos, análisis de protocolos)

modelo de publicación-suscripción

  • comando de publicación para enviar mensajes al canal especificado
  • Comando de suscripción, suscríbete al canal especificado
  • defecto: El mensaje no se puede conservar y los mensajes históricos no se pueden grabar.

¿Cuál es la diferencia entre transacciones en Redis y transacciones en bases de datos relacionales?

  • Una transacción es una colección de una serie de comandos. Una vez iniciada la transacción, todos los comandos se colocan en la cola y se empaquetan juntos para iniciar una solicitud para ejecutar la transacción. Se pueden ejecutar varios comandos en una sola solicitud.
  • El comando MULTI inicia la transacción
  • Transacción de ejecución de comando EXEC
  • Las transacciones relacionales sonátomoOperación, todos los comandos tienen éxito o fallan
  • transacciones no relacionalesno átomosOperación, no ejecutar ningún comando no impedirá que el siguiente comando continúe ejecutándose.

¿Cuál es la diferencia entre los dos métodos de persistencia, RDB y AOF? ¿Cuál es mejor usar?

Instantánea de RDB (base de datos de Redis)

  • Cada intervalo de tiempo fijo, la instantánea de los datos en la memoria se escribe en el disco, es decir, el ROB guarda una copia completa de los datos en un momento determinado.
  • ventaja: Velocidad de recuperación rápida, adecuada para copias de seguridad
  • defecto: Si el servidor deja de funcionar repentinamente, los datos posteriores a la última instantánea se perderán y la persistencia en tiempo real no será posible.
  • Método de activación: 1. Activador automático 2. Comando guardar, durante la ejecución del comando guardar, redis no puede hacer otras cosas 3. Comando bgsave, crea un subproceso específicamente para tomar instantáneas, durante la creación del subproceso, redis No puedo hacer otras cosas, pero tomar instantáneas. Puedes hacer otras cosas durante este período.

Registro AOF (archivo de solo agregar)

  • Al ejecutar un comando, escribe el comando en la memoria y en AOF al mismo tiempo. Cuando Redis se reinicia, usa los comandos en AOF para reconstruir la base de datos. Es decir, AOF es un registro que guarda todos los comandos ejecutados.
  • ventaja: Logre persistencia en tiempo real
  • defecto: El archivo es muy grande, la velocidad de recuperación es lenta y la eficiencia de inicio es baja.

Cada uno tiene sus propias ventajas. La persistencia híbrida es la mejor, es decir, en forma de ROB + AOF incremental. El archivo AOF solo guarda la última instantánea en el comando de ejecución en este momento. Cuando Redis se reinicia, el archivo ROB se carga primero y luego se reproduce el archivo AOF incremental, lo que evita Esto evita que ROB persista en tiempo real y evita que los archivos AOF sean demasiado grandes.

replicación maestro-esclavo

  • Copie datos de un servidor maestro de Redis a otros servidores esclavos de Redis
  • Modo de clúster de Redis de bajo nivel
  • Un nodo maestro puede tener varios nodos esclavos y un nodo esclavo puede tener solo un nodo maestro.
  • Los datos se replican en una dirección, solo del maestro al esclavo, el maestro escribe y el esclavo lee
  • El método de sincronización de datos puede ser copia completa o copia parcial.
  • ventaja: Copia de seguridad de datos en caliente, recuperación de fallas, equilibrio de carga (la separación de lectura y escritura puede compartir la carga del servidor), piedra angular de la alta disponibilidad (la base del modo centinela y el clúster)
  • defecto: La falla del nodo maestro requiere intervención manual (se puede resolver mediante el modo centinela) y la capacidad de escritura del nodo maestro es limitada (se puede resolver mediante el modo distribuido)

Modo centinela

  • Conmutación por error automática, no se requiere intervención manual cuando el nodo maestro falla durante el proceso de replicación maestro-esclavo
  • Se ejecuta en el clúster de Redis como un proceso independiente y monitorea el funcionamiento de los servidores. Si se encuentra un problema en un nodo, notificará a otros nodos a través del modo de publicación y suscripción. Si el nodo maestro falla, se creará un nodo esclavo. Se actualiza a un nuevo nodo maestro y luego se notificará a otros esclavos. El nodo cambió el nodo maestro.
  • Subjetivo fuera de línea y objetivo fuera de línea. Subjetivo fuera de línea significa que el ganglio centinela piensa que hay un problema con un determinado nodo. Objetivo fuera de línea significa que más de un cierto número de ganglios centinela piensan que hay un problema con el nodo maestro.
  • Cómo elegir un nuevo nodo maestro? Obtenga la lista de nodos, primero filtre los nodos en mal estado, luego seleccione los nodos con la prioridad más alta, luego seleccione los nodos con el mayor desplazamiento de replicación (que indica los datos más completos) y luego seleccione el nodo con el runid más pequeño (que indica el más antiguo). puesta en marcha)
  • El ganglio centinela es un proceso y puede fallar, por lo que generalmente se utilizan 3 centinelas y se elige uno.Centinela de liderazgoTrabaja, elige un nuevo líder centinela después de que el líder falle.

Clúster de Redis

  • Partición/fragmentación de datos: La función principal del clúster. El clúster dispersa datos en múltiples nodos. Por un lado, supera el límite de tamaño de memoria de una sola máquina de Redis y aumenta en gran medida la capacidad de almacenamiento. Por otro lado, cada nodo maestro puede proporcionar servicios externos de lectura y escritura, lo que en gran medida Mejora la capacidad de respuesta del cluster.
  • Alta disponibilidad: El clúster admite la replicación maestro-esclavo y la conmutación por error automática del nodo maestro (similar a Sentinel). Cuando falla cualquier nodo, el clúster aún puede proporcionar servicios al mundo exterior.

¿Cómo particionar datos en un clúster?

  • Es decir, cuando obtienes una clave (datos), ¿en qué nodo del clúster deberías colocarla?
  • La partición de datos se realiza al crear el clúster.
  • La cantidad de nodos debe ser al menos 6 para garantizar un clúster completo y de alta disponibilidad.

El nodo toma partición residual

  • Tome el resto del valor hash de la clave o ID de usuario para determinar a qué nodo están asignados los datos.
  • defecto: Cuando cambia el número de nodos, como expandir o reducir nodos, es necesario volver a calcular todas las relaciones de mapeo de nodos de datos, lo que provocará una nueva migración de datos.

Partición hash consistente

  • Todo el espacio de valores hash se organiza en un anillo virtual y luego la dirección IP o el nombre de host del nodo del clúster se procesa y se coloca en el anillo. Cuando obtenemos una clave, primero hacemos el mismo valor Hash para que la clave determine su posición en el anillo, y luego "caminamos" sobre el anillo en el sentido de las agujas del reloj. Cuando encontramos el primer nodo en el anillo, colocamos el llave puesta en a.
  • ventaja: Agregar y eliminar nodos solo afecta a los nodos adyacentes en el anillo hash y no tiene ningún impacto en otros nodos.
  • defecto: Cuando los nodos están distribuidos de manera desigual en el anillo, la presión sobre algunos nodos de caché será mayor. Cuando un nodo falla, todo el acceso a datos realizado por este nodo se trasladará al siguiente nodo, lo que ejercerá presión sobre el siguiente nodo.

partición de ranura virtual

  • El clúster de Redis utiliza esta solución
  • Basado en una partición hash consistente, elNodos virtuales, llamados slots(ranura). En la partición hash consistente utilizando ranuras, un nodo se divide en varias ranuras. Las ranuras son la unidad básica de gestión y migración de datos.
  • Las ranuras desacoplan la relación entre los datos y los nodos reales, y agregar o eliminar nodos tiene poco impacto en el sistema. Cuando se elimina un nodo, las múltiples ranuras debajo del nodo pueden distribuir uniformemente los datos a los nodos restantes, evitando el problema de que todos los datos del nodo se acumulen en el siguiente nodo.

¿Escalado de clúster?

  • Expansión: asignar una cierta cantidad de ranuras y datos al nuevo nodo
  • Reducción: asigne ranuras y datos a otros nodos y luego desconecte el nodo que desea eliminar.

¿Cómo garantizar que los datos de la caché y los datos de la base de datos sean coherentes?

¿Cómo garantizar la coherencia entre el caché local y el caché distribuido?

¿Cómo lidiar con teclas de acceso rápido y teclas grandes?

¿Tubería de Redis?

Supongo que te gusta

Origin blog.csdn.net/weixin_46838605/article/details/132542860
Recomendado
Clasificación