Las últimas notas de Redis7 del nodo de energía: descripción general de Redis

[Nodo de alimentación] Entrada de Redis al tutorial avanzado, el último y más completo tutorial de caché de Redis en toda la red, enciclopedia de Redis

1 Descripción general de Redis

1.1 Introducción a Redis

Redis, Remote Dictionary Server, servicio de diccionario remoto, es una base de datos de memoria de código abierto NoSQL de tipo registro escrita en lenguaje ANSI C, que admite red, basada en memoria y persistente, y proporciona API en varios idiomas.
La razón por la que Redis se denomina servicio de diccionario es porque Redis es un sistema de almacenamiento de clave-valor. Hay muchos tipos de valores que admiten el almacenamiento, incluidos String (cadena), List (lista vinculada), Set (colección), Zset (conjunto ordenado -- conjunto ordenado) y Hash (tipo hash), etc.
La competencia en el uso y funcionamiento de Redis se ha convertido en una habilidad esencial para el personal de desarrollo y mantenimiento.

1.1.1 No SQL

NoSQL ("no relacional", "No solo SQL") generalmente se refiere a bases de datos no relacionales. Con el auge de los sitios web web 2.0 de Internet, las bases de datos relacionales tradicionales no pueden manejar sitios web web 2.0, especialmente sitios web web 2.0 puramente dinámicos de tipo SNS de gran escala y alta concurrencia, y han surgido muchos problemas insuperables. La base de datos no relacional se ha desarrollado muy rápidamente debido a sus propias características. El surgimiento de la base de datos NoSQL es para resolver los desafíos planteados por múltiples tipos de datos de colecciones de datos a gran escala, especialmente los problemas de aplicaciones de big data.

1.1.1.1 Base de datos del almacén de clave-valor

Un par clave-valor como un Mapa. Un representante típico es Redis.

1.1.1.2 Base de datos de almacenamiento de columnas

Una base de datos relacional es una base de datos de almacenamiento de filas típica. El problema es que los datos almacenados por fila ocupan espacio de almacenamiento continuo a nivel físico, lo cual no es adecuado para el almacenamiento masivo de datos. El almacenamiento basado en columnas puede realizar un almacenamiento distribuido, que es adecuado para el almacenamiento masivo. Un representante típico es HBase.

1.1.1.3 Base de datos de documentos

Es una combinación de NoSQL y datos relacionales, más como NoSQL para bases de datos relacionales. Un representante típico es MongoDB.

1.1.1.4 Base de datos de gráficos

Una base de datos utilizada para almacenar una relación de nodo, como describir la relación entre diferentes personas. Un representante típico es Neo4J.

1.2 El propósito de Redis

El escenario en el que Redis se usa más en producción es el almacenamiento en caché de datos. Es decir, los datos consultados por el cliente desde el DBMS se escriben primero en Redis, y no importa qué cliente necesite acceder a los datos más adelante, puede leer directamente los datos en Redis, lo que no solo reduce el RT, sino que también reduce el presión sobre el DBMS.

De acuerdo con la sincronización entre los datos almacenados en caché por Redis y los datos en el DBMS, el caché generalmente se puede dividir en dos tipos: caché síncrono en tiempo real y caché síncrono en fase.
El caché de sincronización en tiempo real significa que después de actualizar los datos en el DBMS, los datos relevantes almacenados en el caché de Redis se borrarán inmediatamente, de modo que cuando haya otra solicitud de acceso a los datos, se deben obtener los datos más recientes del DBMS. primero, y luego Luego escriba a Redis.
La caché de sincronización periódica significa que se permite que los datos en la caché de Redis sean incompletamente coherentes con los datos en el DBMS durante un período de tiempo. Y este período de tiempo es el tiempo de caducidad de los datos almacenados en caché.

1.3 Características de Redis

Hay muchas tecnologías y middleware que se pueden usar para el almacenamiento en caché, como el caché de segundo nivel y Memched que vienen con MyBatis. Solo los productos que realizan almacenamiento en caché en producción elegirán Redis casi sin excepción, porque tiene muchas características que otros productos no tienen.

  • Rendimiento extremadamente alto: la velocidad de lectura de Redis puede alcanzar las 110 000 veces/s y la velocidad de escritura puede alcanzar las 80 000 veces/s. Solo tiene un rendimiento tan alto por las siguientes razones: (1) Todas las operaciones de Redis ocurren en la memoria. (2) Redis está desarrollado en lenguaje C. (3) El código fuente de Redis es muy bueno (combina rendimiento y elegancia).

  • Simple y estable: Redis tiene pocos códigos fuente. La primera versión solo tiene alrededor de 2w de líneas. A partir de la versión 3.0, se agregó la función de clúster y el código cambió a aproximadamente 5w líneas.

  • Persistencia: los datos en la memoria de Redis se pueden conservar de dos maneras: RDB y AOF.

  • Clúster de alta disponibilidad: Redis proporciona una función de clúster maestro-esclavo de alta disponibilidad para garantizar la seguridad del sistema.

  • Tipos de datos enriquecidos: Redis es un sistema de almacenamiento de clave-valor. Hay muchos tipos de valores que admiten el almacenamiento, incluidos String (cadena), List (lista vinculada), Set (colección), Zset (conjunto ordenado -- conjunto ordenado) y Hash (tipo de hash), etc., así como BitMap , HyperLogLog, Tipo geoespacial.

  • BitMap: generalmente se usa para estadísticas binarias de grandes cantidades de datos.

  • HyperLogLog: es Hyperlog Log, que se utiliza para realizar estadísticas de deduplicación en registros con una gran cantidad de datos.

  • Geoespacial: geoespacial, que se utiliza principalmente para cálculos relacionados con la ubicación geográfica.

  • Potentes funciones: Redis proporciona la función de caducidad de datos, la función de publicación/suscripción, la función de transacción simple y también es compatible con la función de extensión de secuencia de comandos Lua.

  • Amplia gama de lenguajes de cliente: Redis proporciona un protocolo de comunicación TCP simple y los lenguajes de programación pueden acceder fácilmente a Redis. Por lo tanto, muchas comunidades de código abierto y grandes empresas han desarrollado clientes de Redis en muchos idiomas.

  • Soporte de control de permisos ACL: el control de permisos anterior es muy torpe. Desde Redis6, se introdujo el módulo ACL, que puede personalizar diferentes permisos de usuario para diferentes usuarios.
    | ACL, Lista de control de acceso, lista de control de acceso, es una estrategia de administración de derechos detallada, que puede controlar los derechos de cualquier usuario o grupo. En la actualidad, la mayoría de los sistemas Unix y las versiones de Linux 2.6 ya son compatibles con ACL. Zookeeper ya es compatible con ACL.
    Los sistemas Unix y Linux utilizan la estrategia de control de permisos UGO (Usuario, Grupo, Otro) de forma predeterminada, que es una estrategia de gestión de permisos de granularidad gruesa. |
    | — |

  • Compatibilidad con el modelo de E/S de subprocesos múltiples: la versión anterior de Redis usaba un modelo de subproceso único y es compatible con un modelo de subprocesos múltiples desde la versión 6.0.

1.4 Modelo IO de Redis

Redis客户端提交的各种请求是如何最终被Redis处理的?Redis处理客户端请求所采用的处理架构,称为Redis的IO模型。不同版本的Redis采用的IO模型是不同的。

1.4.1 Modelo de un solo subproceso

对于Redis 3.0及其以前版本,Redis的IO模型采用的是纯粹的单线程模型。即所有客户端的请求全部由一个线程处理。


El modelo de subproceso único de Redis utiliza multiplexación.

| Hay tres algoritmos de multiplexación comunes para los multiplexores: modelo de selección, modelo de encuesta y modelo de encuesta electrónica.

  • El algoritmo de selección del modelo de sondeo: se utiliza el algoritmo de sondeo. Este modelo tiene un retraso en el procesamiento listo del cliente.

  • El algoritmo de selección del modelo epoll: se adopta el método de devolución de llamada. De acuerdo con los diferentes métodos de procesamiento después de que ocurra el evento listo, se puede dividir en modelo LT y modelo ET.
    |
    | — |

    Para enviar una solicitud a Redis, cada cliente debe establecer una conexión de socket con Redis y registrar un evento con el distribuidor de eventos. Una vez que ocurre este evento, indica que la conexión está lista. Una vez que la conexión esté lista, el despachador de eventos la percibirá y luego obtendrá la solicitud enviada por el cliente a través de la conexión, y será procesada por el hilo único vinculado al despachador de eventos. Si el subproceso todavía está procesando varias tareas, la tarea se escribe en la cola de tareas y espera a que se procese el subproceso.
    Solo se llama despachador de eventos porque entregará tareas a diferentes controladores de eventos de acuerdo con diferentes eventos listos.

1.4.2 Modelo de roscado mixto

Desde Redis 4.0, se han agregado elementos de subprocesos múltiples a Redis. El modelo de subproceso único todavía se usa para procesar solicitudes de clientes, pero para algunas operaciones que requieren mucho tiempo pero que no afectan la respuesta al cliente, son procesadas por otros subprocesos en segundo plano. Por ejemplo, persistencia, reescritura de AOF, limpieza de conexiones inválidas, etc.

1.4.3 Modelo multiproceso

Redis versión 6.0 es el modelo real de subprocesos múltiples. Porque utiliza un modelo de subprocesos múltiples para el procesamiento de solicitudes de clientes.

El "multiproceso" en el modelo de E/S multiproceso solo se usa para aceptar y analizar solicitudes de clientes y luego escribir las solicitudes analizadas en la cola de tareas. El procesamiento de tareas específicas (comandos) aún lo maneja el subproceso principal. De esta forma, los usuarios no necesitan considerar problemas de seguridad de subprocesos, control de transacciones o el orden de ejecución de comandos como LPUSH/LPOP.

1.4.4 Resumen de ventajas y desventajas

1.4.4.1 Modelo de subproceso único

  • Ventajas: alta mantenibilidad y alto rendimiento. No hay lectura y escritura simultáneas, por lo que no hay incertidumbre en el orden de ejecución, no hay sobrecarga de cambio de subprocesos, no hay problemas de interbloqueo y no hay sobrecarga de bloqueo/desbloqueo para la seguridad de los datos.
  • Desventajas: el rendimiento se verá afectado y, dado que un solo subproceso solo puede usar un procesador, se desperdiciará el procesador.

1.4.4.2 Modelo multiproceso

  • Ventajas: Combina las ventajas de multi-threading y single-threading, evitando todas sus deficiencias
  • Contras: el modelo no se muestra decepcionante. Si tiene que encontrar sus deficiencias, no es un "multiproceso" en el verdadero sentido, porque el subproceso que realmente maneja la "tarea" sigue siendo un subproceso único. Por lo tanto, también tiene cierto impacto en el rendimiento.

Supongo que te gusta

Origin blog.csdn.net/f5465245/article/details/130841968
Recomendado
Clasificación