Persistencia NoSQL-Redis

1. Alta disponibilidad de Redis:

1. Información general:

(1) En el servidor web, la alta disponibilidad se refiere al tiempo en que se puede acceder normalmente al servidor y la medida es cuánto tiempo se puede brindar el servicio normal (99,9%, 99,99%, 99,999%, etc.).

(2) En el contexto de Redis, el significado de alta disponibilidad parece ser más amplio: además de garantizar la prestación de servicios normales (como la separación maestro-esclavo, tecnología de recuperación rápida ante desastres), también es necesario considerar la expansión de capacidad de datos y seguridad de datos sin pérdida.

(3) En Redis, las tecnologías para lograr alta disponibilidad incluyen principalmente persistencia, replicación maestro-esclavo, centinela y clústeres, a continuación se describen sus funciones y qué problemas resuelven.

① Persistencia: La persistencia es el método de alta disponibilidad más simple (a veces ni siquiera se clasifica como método de alta disponibilidad). Su función principal es la copia de seguridad de datos, es decir, almacenar datos en el disco duro para garantizar que no se pierdan debido a salida del proceso.

② Replicación maestro-esclavo: la replicación maestro-esclavo es la base de Redis de alta disponibilidad. Los centinelas y los clústeres se basan en la replicación maestro-esclavo para lograr una alta disponibilidad. La replicación maestro-esclavo implementa principalmente copias de seguridad de datos en múltiples máquinas, así como equilibrio de carga para operaciones de lectura y recuperación de fallas simples. Defectos: la recuperación de fallas no se puede automatizar; las operaciones de escritura no se pueden equilibrar la carga; la capacidad de almacenamiento está limitada por una sola máquina.

③ Sentinel: basado en la replicación maestro-esclavo, Sentinel realiza una recuperación automática de fallas. Defectos: las operaciones de escritura no pueden equilibrarse la carga; la capacidad de almacenamiento está limitada por una sola máquina.

④ Clúster de clúster: a través del clúster, Redis resuelve el problema de que la operación de escritura no puede equilibrar la carga y la capacidad de almacenamiento está limitada por una sola máquina, y logra una solución de alta disponibilidad relativamente completa.

En segundo lugar, la persistencia de Redis:

1. Función de persistencia:

Redis es una base de datos en memoria y los datos se almacenan en la memoria. Para evitar la pérdida permanente de datos después de que el proceso de Redis sale anormalmente debido a fallas de energía del servidor y otras razones, es necesario guardar periódicamente los datos en Redis desde la memoria de alguna forma (datos o comandos) al disco duro; cuando Redis se reinicie la próxima vez, use el archivo persistente para lograr la recuperación de datos. Además, los archivos persistentes se pueden copiar a una ubicación remota para realizar copias de seguridad en caso de desastre.

2. Redis proporciona dos métodos de persistencia:

(1) Persistencia de RDB: el principio es guardar los registros de la base de datos de Reids en la memoria en el disco con regularidad.
(2) Persistencia AOF (solo agregar archivo): el principio es escribir el registro de operaciones de Reids en el archivo de forma adjunta, similar al binlog de MySQL.

  • Debido a que el rendimiento en tiempo real de la persistencia AOF es mejor, es decir, se pierden menos datos cuando el proceso sale inesperadamente, AOF es actualmente el método de persistencia principal, pero la persistencia RDB todavía tiene su lugar.

3. Persistencia de RDB:

1. Definición:

La persistencia RDB se refiere a guardar la instantánea de los datos del proceso actual en la memoria en el disco duro dentro de un intervalo de tiempo específico (por lo que también se llama persistencia de instantánea), almacenada en compresión binaria y el sufijo del archivo guardado es rdb. ; cuando Redis se reinicia, puede leer el archivo de instantánea para restaurar los datos.

2. Condiciones de activación:

  • La activación de la persistencia RDB se divide en activación manual y activación automática.

(1) Activador manual:
tanto el comando guardar como el comando bgsave pueden generar archivos RDB.
El comando guardar bloqueará el proceso del servidor Redis hasta que se cree el archivo RDB. Durante el bloqueo del servidor Redis, el servidor no puede procesar ninguna solicitud de comando.
El comando bgsave crea un proceso hijo, que es responsable de crear el archivo RDB, y el proceso padre (es decir, el proceso principal de Redis) continúa procesando las solicitudes.

Durante la ejecución del comando bgsave, solo el proceso hijo fork bloqueará el servidor, pero para el comando save, todo el proceso bloqueará el servidor, por lo que guardar se ha abandonado básicamente y se debe evitar el uso de guardar en línea. ambiente.

(2) Activador automático:
al activar automáticamente la persistencia de RDB, Redis también elegirá bgsave en lugar de guardar para persistencia.

El caso más común de activación automática de save mn
es pasar save mn en el archivo de configuración para especificar que bgsave se activará cuando se produzcan n cambios en m segundos.

vim /etc/redis/6379.conf
--219行--以下三个save条件满足任意一个时,都会引起bgsave的调用
save 900 1 :当时间到900秒时,如果redis数据发生了至少1次变化,则执行bgsave
save 300 10 :当时间到300秒时,如果redis数据发生了至少10次变化,则执行bgsave
save 60 10000 :当时间到60秒时,如果redis数据发生了至少10000次变化,则执行bgsave
--254行--指定RDB文件名
dbfilename dump.rdb
--264行--指定RDB文件和AOF文件所在目录
dir /var/lib/redis/6379
--242行--是否开启RDB文件压缩
rdbcompression yes

(3) Otros mecanismos de activación automática:
además de guardar mn, existen otras situaciones que activan bgsave:
① En el escenario de replicación maestro-esclavo, si el nodo esclavo realiza una operación de copia completa, el nodo maestro ejecutará el comando bgsave y guarde el archivo rdb enviado al nodo esclavo.
② Cuando se ejecuta el comando de apagado, la persistencia de rdb se ejecuta automáticamente.

3. Proceso de ejecución:

(1) El proceso principal de Redis primero juzga: si actualmente está ejecutando save, o el proceso secundario de bgsave / bgrewriteaof, si se está ejecutando, el comando bgsave regresará directamente. Los procesos secundarios de bgsave/bgrewriteaof no se pueden ejecutar al mismo tiempo, principalmente por consideraciones de rendimiento: dos procesos secundarios concurrentes realizan una gran cantidad de operaciones de escritura en disco al mismo tiempo, lo que puede causar graves problemas de rendimiento.
(2) El proceso padre ejecuta la operación de bifurcación para crear un proceso hijo. Durante este proceso, el proceso padre se bloquea y Redis no puede ejecutar ningún comando del cliente. (3) Después de que el proceso padre se bifurca, el comando bgsave devuelve el Mensaje "
Se inició el guardado en segundo plano" y ya no bloquea El proceso principal puede responder a otros comandos
(4) El proceso secundario crea un archivo RDB, genera un archivo de instantánea temporal basado en la instantánea de memoria del proceso principal y reemplaza atómicamente el archivo original después de la finalización
(5) El proceso hijo envía una señal al proceso padre para indicar la finalización, y el proceso padre actualiza las estadísticas del proceso.

inserte la descripción de la imagen aquí

4. Cargar al inicio:

(1) La carga del archivo RDB se ejecuta automáticamente cuando se inicia el servidor y no hay ningún comando especial. Pero debido a que AOF tiene una prioridad más alta, cuando AOF está activado, Redis se cargará primero.

(2) Los archivos AOF se utilizan para restaurar datos; solo cuando AOF está cerrado, los archivos RDB se detectarán y cargarán automáticamente cuando se inicie el servidor Redis. El servidor se bloquea mientras se carga el archivo RDB hasta que se completa la carga.

(3) Cuando Redis cargue el archivo RDB, lo verificará. Si el archivo está dañado, se imprimirá un error en el registro y Redis no podrá iniciarse.

5. Ventajas y desventajas de RDB:

(1) Desventajas:
① La integridad de los datos no es tan buena como la de aof
② rdb es similar a una instantánea (perfecto)
③ Al realizar la copia de seguridad, bloqueará el proceso
(2) Ventajas:
① Bloqueo de velocidad persistente (debido al resultado de los datos guardados) , al escribir a * .Los archivos persistentes RDB se comprimen para reducir su tamaño
② En el clúster, replicación maestro-esclavo de Redis, desde el servidor maestro para sincronización, de forma predeterminada, los archivos RDB se usan primero, operaciones de recuperación, todo el rendimiento de sincronización es alto

4. Persistencia de AOF:

  • La persistencia RDB consiste en escribir datos de proceso en archivos, mientras que la persistencia AOF consiste en registrar cada comando de escritura y eliminación ejecutado por Redis en un archivo de registro separado, y la operación de consulta no se registrará; cuando Redis se reinicie, ejecute el comando del archivo AOF nuevamente en para restaurar datos. En comparación con RDB, AOF tiene un mejor rendimiento en tiempo real, por lo que se ha convertido en la solución de persistencia principal.

1. Encienda AOF:

El servidor Redis habilita RDB de forma predeterminada y deshabilita AOF; para habilitar AOF, debe configurarse en el archivo de configuración:

vim /etc/redis/6379.conf
--700行--修改,开启AOF
appendonly yes
--704行--指定AOF文件名称
appendfilename "appendonly.aof"
--796行--是否忽略最后一条可能存在问题的指令
aof-load-truncated yes
/etc/init.d/redis_6379 restart

2. Proceso de ejecución:

Dado que es necesario registrar cada comando de escritura de Redis, no es necesario activar AOF. A continuación se describe el proceso de ejecución de AOF.

(1) agregar comando (agregar):
① Redis primero agrega el comando de escritura al búfer en lugar de escribir el archivo directamente, principalmente para evitar escribir directamente en el disco duro cada vez que hay un comando de escritura, lo que hace que el IO del disco duro se convierta en El cuello de botella de la carga de Redis.
② El formato de adición de comandos es el formato de protocolo de solicitud de comando de Redis. Es un formato de texto sin formato, que tiene las ventajas de buena compatibilidad, gran legibilidad, fácil procesamiento, operación simple y evita sobrecargas secundarias.

③ En el archivo AOF, excepto el comando de selección utilizado para especificar la base de datos (como seleccionar 0 para seleccionar la base de datos 0), que Redis agrega, todos los demás son comandos de escritura enviados por el cliente.

(2) Escritura de archivos (escritura) y sincronización de archivos (sincronización):
Redis proporciona una variedad de estrategias de sincronización de archivos para el área del búfer AOF. La estrategia involucra la función de escritura y la función fsync del sistema operativo. La descripción es la siguiente
: Para mejorar la eficiencia de la escritura de archivos, en un sistema operativo moderno, cuando el usuario llama a la función de escritura para escribir datos en un archivo, el sistema operativo generalmente almacena temporalmente los datos en un búfer de memoria, y solo cuando el búfer está lleno o excede el límite de tiempo especificado, el sistema operativo realmente almacenará los datos. Los datos en el búfer se escriben en el disco duro. Aunque este tipo de operación mejora la eficiencia, también trae problemas de seguridad: si la computadora se apaga, los datos en la memoria intermedia se perderán; por lo tanto, el sistema también proporciona funciones de sincronización como fsync y fdatasync, que pueden forzar el sistema operativo. Para actualizar inmediatamente los datos en el búfer, los datos se escriben en el disco duro para garantizar la seguridad de los datos.

Existen tres métodos de sincronización para la estrategia de archivos de sincronización del área de caché AOF, que son:

vim /etc/redis/6379.conf
--729--
●appendfsync always: 命令写入aof_buf后立即调用系统fsync操作同步到AOF文件,fsync完成后线程返回。这种情况下,每次有写命令都要同步到AOF文件,硬盘IO成为性能瓶颈,Redis只能支持大约几百TPS写入,严重降低了Redis的性能;即便是使用固态硬盘(SSD),每秒大约也只能处理几万个命令,而且会大大降低SSD的寿命。

●appendfsync no: 命令写入aof_buf后调用系统write操作,不对AOF文件做fsync同步;同步由操作系统负责,通常同步周期为30秒。这种情况下,文件同步的时间不可控,且缓冲区中堆积的数据会很多,数据安全性无法保证。

●appendfsync everysec: 命令写入aof_buf后调用系统write操作,write完成后线程返回;fsync同步文件操作由专门的线程每秒调用一次。everysec是前述两种策略的折中,是性能和数据安全性的平衡,因此是Redis的默认配置,也是我们推荐的配置。

(3) Reescritura de archivos (reescritura)

① La reescritura de archivos se refiere a reescribir archivos AOF periódicamente para reducir su tamaño. Cabe señalar que la reescritura de AOF consiste en convertir los datos en el proceso de Redis en comandos de escritura, sincronizarlos con el nuevo archivo AOF y no realizará ninguna operación de lectura o escritura en el archivo AOF anterior.

② Otro punto a tener en cuenta sobre la reescritura de archivos es: para la persistencia de AOF, aunque se recomienda encarecidamente la reescritura de archivos, no es necesaria; incluso sin reescritura de archivos, los datos pueden persistir e iniciarse en Redis Import en ese momento; por lo tanto, en algunas realidades, automáticamente La reescritura de archivos se desactivará y luego se programará para que se ejecute a una hora determinada todos los días mediante una tarea programada.

③ La razón por la que la reescritura de archivos puede comprimir archivos AOF es:

  • Los datos caducados ya no se escriben en el archivo.

  • Los comandos no válidos ya no se escriben en el archivo: por ejemplo, algunos datos se configuran repetidamente (set mykey v1, set mykey v2), algunos datos se eliminan (set myset v1, del myset), etc.

  • Se pueden combinar varios comandos en uno: por ejemplo, sadd myset v1, sadd myset v2, sadd myset v3 se pueden combinar en sadd myset v1 v2 v3.

  • Del contenido anterior se puede ver que, dado que los comandos ejecutados por AOF se reducen después de la reescritura, la reescritura de archivos no solo puede reducir el espacio ocupado por el archivo, sino también acelerar la velocidad de recuperación.

④ El activador de reescritura de archivos se divide en activador manual y activador automático:

  • Activador manual: llame directamente al comando bgrewriteaof. La ejecución de este comando es algo similar a bgsave: ambos subprocesos de bifurcación realizan un trabajo específico y ambos se bloquean solo cuando se bifurca.
  • Activador automático: BGREWRITEAOF se ejecuta automáticamente configurando la opción auto-aof-rewrite-min-size y la opción auto-aof-rewrite-percentage. Solo cuando las dos opciones de auto-aof-rewrite-min-size y auto-aof-rewrite-percentage se satisfacen al mismo tiempo, la reescritura de AOF se activará automáticamente, es decir, la operación bgrewriteaof.
vim /etc/redis/6379.conf
--729--
●auto-aof-rewrite-percentage 100	:当前AOF文件大小(即aof_current_size)是上次日志重写时AOF文件大小(aof_base_size)两倍时,发生BGREWRITEAOF操作
●auto-aof-rewrite-min-size 64mb :当前AOF文件执行BGREWRITEAOF命令的最小值,避免刚开始启动Reids时由于文件尺寸较小导致频繁的BGREWRITEAOF	


关于文件重写的流程,有两点需要特别注意:(1)重写由父进程fork子进程进行;(2)重写期间Redis执行的写命令,需要追加到新的AOF文件中,为此Redis引入了aof_rewrite_buf缓存。

⑤ El proceso de reescritura de archivos es el siguiente:
(1) El proceso principal de Redis primero juzga si hay un proceso secundario actualmente ejecutando bgsave/bgrewriteaof. Si existe, el comando bgrewriteaof regresa directamente. Si hay un comando bgsave, espere la ejecución de bgsave debe completarse antes de ejecutarla.
(2) El proceso principal ejecuta la operación de bifurcación para crear un proceso secundario y el proceso principal se bloquea durante este proceso.
(3.1) Después de que el proceso principal se bifurca, el comando bgrewriteaof devuelve el mensaje "Se inició la reescritura de archivos solo para agregar en segundo plano" y ya no bloquea el proceso principal y puede responder a otros comandos. Todos los comandos de escritura de Redis todavía se escriben en el búfer AOF y se sincronizan con el disco duro de acuerdo con la estrategia appendfsync para garantizar la corrección del mecanismo AOF original.
(3.2) Dado que la operación de bifurcación utiliza la tecnología de copia en escritura, el proceso hijo solo puede compartir los datos de la memoria durante la operación de bifurcación. Dado que el proceso principal todavía responde al comando, Redis utiliza el búfer de reescritura AOF (aof_rewrite_buf) para guardar esta parte de los datos y evitar la pérdida de esta parte de los datos durante la generación del nuevo archivo AOF. Es decir, durante la ejecución de bgrewriteaof, los comandos de escritura de Redis se agregan simultáneamente a dos buffers, aof_buf y aof_rewrite_buf.
(4) Según la instantánea de la memoria, el proceso hijo escribe en el nuevo archivo AOF de acuerdo con las reglas de fusión de comandos.
(5.1) Después de que el proceso hijo escribe el nuevo archivo AOF, envía una señal al proceso padre, y el proceso padre actualiza la información estadística, que se puede ver a través de la persistencia de información.
(5.2) El proceso principal escribe los datos en el búfer de reescritura AOF en el nuevo archivo AOF, asegurando así que el estado de la base de datos guardado en el nuevo archivo AOF sea consistente con el estado actual del servidor.
(5.3) Reemplace el archivo antiguo con el nuevo archivo AOF para completar la reescritura de AOF.

inserte la descripción de la imagen aquí

3. Cargar al inicio:

(1) Cuando AOF está activado, Redis primero cargará el archivo AOF para restaurar datos cuando se inicie; solo cuando AOF esté desactivado, cargará el archivo RDB para restaurar datos.

(2) Cuando AOF está habilitado pero el archivo AOF no existe, no se cargará incluso si el archivo RDB existe.

(3) Cuando Redis carga el archivo AOF, lo verificará. Si el archivo está dañado, se imprimirá un error en el registro y Redis no podrá iniciarse. Sin embargo, si el final del archivo AOF está incompleto (un tiempo de inactividad repentino de la máquina, etc. puede causar fácilmente que el final del archivo esté incompleto) y el parámetro aof-load-truncated está habilitado, se mostrará una advertencia en el registro. , Redis ignora el final del archivo AOF y el inicio es exitoso. El parámetro aof-load-truncated está habilitado de forma predeterminada.

4. Ventajas y desventajas de AOF:

(1) Desventajas
① Cuando la declaración se ejecuta todo el tiempo, el contenido de la copia de seguridad AOF es mayor, el contenido de la copia de seguridad RDB es menor, el resultado de la copia de seguridad, la declaración

② AOF consume más rendimiento y ocupa cada vez más discos (equivalente a la copia de seguridad de MySQL)

(2) Ventajas:

① La integridad de los datos de AOF es mayor que la de RDB

② La función de reescritura eliminará declaraciones no válidas (el propósito es ahorrar el espacio en disco ocupado por los archivos AOF)

5. Gestión del rendimiento de Redis:

1. Ver el uso de memoria de Redis:

info memory

2. Tasa de fragmentación de la memoria:

(1) Calculado dividiendo el valor de memoria used_memory_rss asignado por el sistema operativo por el valor de memoria total used_memory utilizado por Redis.
El valor de memoria used_memory_rss indica el tamaño de la memoria física ocupada por el proceso, es decir, el tamaño de la memoria asignada a la instancia de Redis por el sistema operativo.

(2) Además de los datos definidos por el usuario y la sobrecarga interna, el indicador used_memory_rss también incluye la sobrecarga de la fragmentación de la memoria, que es causada por la asignación/recuperación ineficiente de la memoria física por parte del sistema operativo (asignación de memoria física discontinua).

(3) Por ejemplo: Redis necesita asignar bloques de memoria continuos para almacenar conjuntos de datos 1G. Si no hay un bloque de memoria continuo que exceda 1G en la memoria física, el sistema operativo tiene que usar múltiples bloques de memoria pequeños discontinuos para asignar y almacenar los datos 1G, y esta operación provocará la fragmentación de la memoria.

  • Es razonable que la tasa de fragmentación de la memoria sea ligeramente mayor que 1. Este valor indica que la tasa de fragmentación de la memoria es relativamente baja y también muestra que Redis no intercambia memoria.
  • Si la tasa de fragmentación de la memoria supera 1,5, significa que Redis consume el 150% de la memoria física real requerida, de la cual el 50% es la tasa de fragmentación de la memoria. Debe ingresar el comando apagar y guardar en la herramienta redis-cli para permitir que la base de datos de Redis ejecute la operación de guardar y cierre el servicio de Redis, y luego reinicie el servidor.
  • Si la tasa de fragmentación de la memoria es inferior a 1, significa que la asignación de memoria de Redis excede la memoria física y el sistema operativo está intercambiando memoria. Necesidad de aumentar la memoria física disponible o reducir el uso de memoria de Redis.

3. Uso de memoria:

  • Si el uso de memoria de la instancia de Redis excede la memoria máxima disponible, el sistema operativo comenzará a intercambiar memoria y espacio de intercambio.

  • Formas de evitar el intercambio de memoria:

    • Elija instalar la instancia de Redis para el tamaño de los datos almacenados en caché
    • Utilice el almacenamiento de estructura de datos Hash tanto como sea posible
    • Establecer el tiempo de vencimiento de la clave

4. Clave de recuperación interna:

  • La estrategia de limpieza de memoria garantiza una asignación razonable de los recursos de memoria limitados de Redis.

  • Cuando se alcanza el umbral máximo establecido, se debe seleccionar una estrategia de reciclaje clave. De forma predeterminada, la estrategia de reciclaje es prohibir la eliminación.

    vim /etc/redis/6379.conf
    --598--
    maxmemory-policy noenviction
    volatile-lru:使用LRU算法从已设置过期时间的数据集合中淘汰数据(移除最近最少使用的key,针对设置了TTL的key)
    volatile-ttl:从已设置过期时间的数据集合中挑选即将过期的数据淘汰(移除最近过期的key)
    volatile-random:从已设置过期时间的数据集合中随机挑选数据淘汰(在设置了TTL的key里随机移除)
    allkeys-lru:使用LRU算法从所有数据集合中淘汰数据(移除最少使用的key,针对所有的key)
    allkeys-random:从数据集合中任意选择数据淘汰(随机移除key)
    noenviction:禁止淘汰数据(不删除直到写满时报错)
    

6. Resumen de RDB y AOF:

1. Comprensión básica de RDB y AOF:

(1) RDB: guarda periódicamente los datos de la memoria en el disco.

(2) AOF: sincroniza el proceso de ejecución con el disco desde el registro de operaciones de ejecución de redis.

2. El proceso de persistencia de RDB y AOF:

(1) RDB: ① En la memoria, el método de escritura en el disco para guardar.

② Los datos del resultado se escriben en el objeto de datos guardado en el disco.

③ Después de escribir la memoria en el disco, se comprimirá para reducir el espacio en disco ocupado por *.rdb.

(2) AOF: ① En la memoria, se agrega un anexo al búfer y se llama al recurso de la CPU para escribir en el disco.

② La declaración de ejecución en el registro de operaciones se agrega al búfer y se llama al recurso de la CPU para escribir en el disco.

③ La memoria, el búfer y el disco se reescribirán periódicamente después de escribir, omitiendo algunas "operaciones no válidas" para guardar.

3. El método de activación de RDB y AOF:

(1) RDB: ① Disparador manual

② Disparador automático: guardar mn.

③ Activador especial: cuando se cierra manualmente, rdb persistirá. /etc/init.d/redis_6379 reiniciar

(2) AOF: ① Disparador manual

② Activador automático: ejecute siempre cada declaración de forma sincrónica para lograr persistencia (escenario con gran coherencia)

​ no, nunca persistas

​ cada segundo la persistencia de AOE se realiza cada segundo (escenario equilibrado recomendado)

4. Prioridad RDB y AOE:

(1) Debido a que Redis almacena datos en la memoria de forma predeterminada, los datos en la memoria se perderán si se inicia o cierra Redis.

(2) Cada vez que se inicia Redis, leerá el archivo persistente y enviará los datos a la memoria para garantizar la integridad de los datos de Reids.

(3) Prioridad de RDB y AOF aof> El archivo de configuración de RDB puede especificar para comenzar a modificar cada parámetro 6379.conf

5. Ventajas y desventajas de RDB y AOF:

(1) persistencia de RDB:

① Ventajas: los archivos RDB son compactos, de tamaño pequeño, rápidos en la transmisión de red, adecuados para copia completa; la velocidad de recuperación es mucho más rápida que AOF. Por supuesto, una de las ventajas más importantes de RDB en comparación con AOF es el impacto relativamente pequeño en el rendimiento.

② Desventajas: la desventaja fatal de los archivos RDB es que el método de persistencia de las instantáneas de datos determina que no se puede lograr la persistencia en tiempo real. Hoy en día, cuando los datos se vuelven cada vez más importantes, una gran cantidad de pérdida de datos a menudo es inaceptable, por lo que AOF la persistencia se convierta en algo común. Además, los archivos RDB deben cumplir con un formato específico y tener poca compatibilidad (por ejemplo, las versiones antiguas de Redis no son compatibles con las nuevas versiones de archivos RDB).

③ Para la persistencia de RDB, por un lado, el proceso principal de Redis se bloqueará cuando bgsave realice la operación de bifurcación y, por otro lado, la escritura de datos en el disco duro mediante el proceso secundario también generará presión de IO.

(2) persistencia de AOF

① En correspondencia con la persistencia RDB, la ventaja de AOF es que admite persistencia de segundo nivel y buena compatibilidad, la desventaja es que el archivo es grande, la velocidad de recuperación es lenta y tiene un gran impacto en el rendimiento.

② Para la persistencia de AOF, la frecuencia de escritura de datos en el disco duro aumenta considerablemente (segundo nivel bajo la estrategia de cada segundo), la presión de IO es mayor e incluso puede causar problemas de bloqueo adicionales de AOF.

El método determina que no se puede lograr la persistencia en tiempo real y, hoy en día, cuando los datos se vuelven cada vez más importantes, una gran pérdida de datos a menudo es inaceptable, por lo que la persistencia AOF se ha convertido en la corriente principal. Además, los archivos RDB deben cumplir con un formato específico y tener poca compatibilidad (por ejemplo, las versiones antiguas de Redis no son compatibles con las nuevas versiones de archivos RDB).

③ Para la persistencia de RDB, por un lado, el proceso principal de Redis se bloqueará cuando bgsave realice la operación de bifurcación y, por otro lado, la escritura de datos en el disco duro mediante el proceso secundario también generará presión de IO.

(2) persistencia de AOF

① En correspondencia con la persistencia RDB, la ventaja de AOF es que admite persistencia de segundo nivel y buena compatibilidad, la desventaja es que el archivo es grande, la velocidad de recuperación es lenta y tiene un gran impacto en el rendimiento.

② Para la persistencia de AOF, la frecuencia de escritura de datos en el disco duro aumenta considerablemente (segundo nivel bajo la estrategia de cada segundo), la presión de IO es mayor e incluso puede causar problemas de bloqueo adicionales de AOF.

③ La reescritura del archivo AOF es similar al bgsave del RDB, y habrá bloqueo durante la bifurcación y la presión IO del proceso hijo. En términos relativos, dado que AOF escribe datos en el disco duro con más frecuencia, tendrá un mayor impacto en el rendimiento del proceso principal de Redis.

Supongo que te gusta

Origin blog.csdn.net/Riky12/article/details/131946262
Recomendado
Clasificación