¿Cómo persiste Redis en el disco duro?

¿Por qué Redis necesita persistencia?

Usaremos Redis más o menos en nuestros proyectos, y Redis se usa principalmente como base de datos de caché. El uso de Redis puede mejorar enormemente el rendimiento de nuestros programas. Una de las razones por las que el uso de Redis es más rápido es que los datos de Redis se almacenan en la memoria y las aplicaciones solo necesitan leer desde la memoria para acceder a Redis.

imagen

La lectura de datos de la memoria puede aumentar la velocidad de acceso, pero cuando Redis se cuelga, los datos de la memoria se perderán. Para evitar la pérdida de datos, debemos conservar los datos en el disco duro. Cuando Redis se cuelga, los datos se han almacenado en el disco duro. Una vez que Redis se reinicia, los datos del disco duro se volverán a cargar en la memoria.

imagen

Entonces aquí viene el problema.

"

¿Cómo es Redis persistente?

"

Dos métodos de persistencia

En Redis se proporcionan dos métodos de persistencia diferentes: RDB y AOF.

  • El método de persistencia RDB puede realizar el almacenamiento de instantáneas de sus datos en un intervalo de tiempo específico.

  • El método de persistencia AOF registra cada operación de escritura en el servidor. Cuando el servidor se reinicia, estos comandos se volverán a ejecutar para restaurar los datos originales. El comando AOF usa el protocolo Redis para agregar y guardar cada operación de escritura al final del archivo. . Redis también puede reescribir el archivo AOF en segundo plano para que el volumen del archivo AOF no sea demasiado grande.

    Cuando habilitamos ambos métodos de persistencia al mismo tiempo, el archivo AOF se cargará primero para restaurar los datos originales cuando Redis se reinicie, porque en circunstancias normales, el conjunto de datos guardado por el archivo AOF es más completo que el conjunto de datos guardado por el RDB. expediente.

Echemos un vistazo al archivo de configuración de Redis redis.conf y echemos un vistazo a la configuración de persistencia.

Si queremos habilitar el modo AOF, necesitamos cambiar

appendonly no修改为appendonly yes

imagen

Esta es la configuración de 3 estrategias de persistencia AOF.

"
  • appendfsync everysec: Significa que la operación de sincronización de datos con el disco duro se realiza una vez por segundo, entonces es probable que los datos se pierdan dentro de este segundo intervalo. Esta es la estrategia predeterminada del programa.

  • appendfsync always: Indica que la sincronización de datos se realizará cada vez que se escriban.

  • appendfsync no: Indica que Redis no realiza la sincronización de datos y la realiza el sistema operativo.

"

Echemos un vistazo a la forma RDB de configuración de almacenamiento.

imagen

El formato aquí es:

save <时间间隔(秒)>  <写入次数>

De la configuración anterior, sabemos:

"
  • save 900 1: Si el valor de al menos una tecla cambia en 900 segundos, se guardará.

  • save 200 10: Si al menos 10 valores clave cambian en 300 segundos, se guardará.

  • save 60 10000: Las reglas son las mismas que las anteriores.

"

Si queremos deshabilitarlo, comente directamente.

Sobre RDB

Echemos un vistazo a las ventajas y desventajas de RDB.

Ventajas de RDB

  • RDB es un archivo muy compacto. Guarda un conjunto de datos en un momento determinado. Es muy adecuado para realizar copias de seguridad de conjuntos de datos. Por ejemplo, puede guardar los datos de las últimas 24 horas cada hora y guardar los últimos 30 días todos los días datos. De esta manera, incluso si algo sale mal, puede restaurar a una versión diferente del conjunto de datos según sus necesidades.

  • RDB es un archivo único compacto que se puede transferir fácilmente a otro centro de datos remoto y es muy adecuado para la recuperación de desastres.

  • Cuando RDB guarda el archivo RDB, lo único que debe hacer el proceso principal es bifurcar un proceso secundario. El siguiente trabajo lo realiza el proceso secundario. El proceso principal no necesita realizar otras operaciones IO, por lo que el método de persistencia RDB puede maximizar el rendimiento de redis.

  • En comparación con AOF, el método RDB será más rápido al recuperar grandes conjuntos de datos.

Desventajas de RDB

  • Si desea perder la menor cantidad de datos cuando Redis deja de funcionar inesperadamente (como un corte de energía), RDB no es para usted. Aunque puede configurar diferentes puntos de tiempo de guardado (por ejemplo, cada 5 minutos y 100 operaciones de escritura en el conjunto de datos), es una tarea relativamente pesada para Redis guardar por completo el conjunto de datos completo. Por lo general, lo hace cada 5 minutos. un ahorro completo durante más tiempo. En caso de un tiempo de inactividad inesperado en Redis, es posible que pierda algunos minutos de datos.

  • RDB necesita bifurcar procesos secundarios con frecuencia para guardar el conjunto de datos en el disco duro. Cuando el conjunto de datos es relativamente grande, el proceso de bifurcación requiere mucho tiempo y puede hacer que Redis no responda a las solicitudes del cliente en unos pocos milisegundos. Si el conjunto de datos es enorme Y si el rendimiento de la CPU no es muy bueno, esta situación durará 1 segundo, y AOF también necesita una bifurcación, pero puede ajustar la frecuencia de reescritura del archivo de registro para mejorar la durabilidad del conjunto de datos.

Por lo anterior, podemos saber que RDB guarda datos. Dado que el almacenamiento de datos es una operación muy pesada, guarda los datos durante un período de tiempo determinado, por lo que será más rápido restaurar los datos con RDB. Pero los datos recuperados pueden perderse.

Sobre AOF

Ventajas de AOF

  • El uso de AOF hará que Redis sea más duradero. Podemos usar diferentes estrategias fsync: sin fsync, fsync por segundo y fsync cada vez que escribe. Usando la estrategia predeterminada de fsync por segundo, el rendimiento de Redis sigue siendo muy bueno (fsync es procesado por un subproceso en segundo plano, y el subproceso principal hará todo lo posible para procesar las solicitudes del cliente). Una vez que ocurre una falla, puede perder hasta 1 segundo de datos.

  • El archivo AOF es un archivo de registro que solo se adjunta, por lo que no es necesario escribirlo para buscar, incluso si por alguna razón (el espacio en el disco está lleno, tiempo de inactividad durante la escritura, etc.), aún podemos usar el comando de escritura completo La herramienta redis-check-aof corrige estos problemas.

  • Redis puede reescribir automáticamente AOF en segundo plano cuando el volumen del archivo AOF se vuelve demasiado grande: el nuevo archivo AOF después de la reescritura contiene el conjunto mínimo de comandos necesarios para restaurar el conjunto de datos actual. Toda la operación de reescritura es absolutamente segura, porque Redis continuará agregando comandos al archivo AOF existente durante el proceso de creación de un nuevo archivo AOF. Incluso si hay un tiempo de inactividad durante el proceso de reescritura, el archivo AOF existente no se perderá. . Una vez que se crea el nuevo archivo AOF, Redis cambiará del antiguo archivo AOF al nuevo archivo AOF y comenzará a agregar el nuevo archivo AOF.

  • El archivo AOF almacena todas las operaciones de escritura realizadas en la base de datos de manera ordenada. Estas operaciones de escritura se guardan en el formato del protocolo Redis, por lo que el contenido del archivo AOF es muy fácil de leer por las personas y es fácil para analizar el archivo (parse). Exportar archivos AOF también es muy simple: por ejemplo, si ejecuta accidentalmente el comando FLUSHALL, pero siempre que el archivo AOF no se reescriba, simplemente detenga el servidor, elimine el comando FLUSHALL al final del archivo AOF y reinicie Redis , Puede restaurar el conjunto de datos al estado anterior a la ejecución de FLUSHALL.

Desventajas de AOF

  • Para el mismo conjunto de datos, el volumen del archivo AOF suele ser mayor que el volumen del archivo RDB.

  • Dependiendo de la estrategia fsync utilizada, la velocidad de AOF puede ser más lenta que la de RDB. En general, el rendimiento de fsync por segundo sigue siendo muy alto, y apagar fsync puede hacer que AOF sea tan rápido como RDB, incluso bajo una carga alta. Sin embargo, cuando se trata de grandes cargas y escrituras, RDB puede proporcionar una latencia máxima más garantizada (latencia).

De lo anterior, podemos saber que el modo AOF guarda comandos de escritura. Dado que el guardar es un comando de operación, es más fácil guardar en este paso, y los datos restaurados serán más completos, pero debido a que el guardado es un comando, cuando restauración Estos comandos deben ejecutarse una vez, lo que requiere mucho tiempo.

En resumen, podemos usar el modo híbrido RDB y AOF para la persistencia. En el futuro, Redis puede combinar RDB y AOF en un solo modelo de persistencia.

referencia

Sitio web oficial de Redis: http://www.redis.cn/topics/persistence.html

Recomendado en el pasado

Escanee el código QR para ser más emocionante. O busque Lvshen_9 en WeChat , puede responder para obtener información en segundo plano

回复"java" 获取java电子书;
 
回复"python"获取python电子书;
 
回复"算法"获取算法电子书;
 
回复"大数据"获取大数据电子书;
 
回复"spring"获取SpringBoot的学习视频。
 
回复"面试"获取一线大厂面试资料
 
回复"进阶之路"获取Java进阶之路的思维导图
 
回复"手册"获取阿里巴巴Java开发手册(嵩山终极版)
 
回复"总结"获取Java后端面试经验总结PDF版
 
回复"Redis"获取Redis命令手册,和Redis专项面试习题(PDF)
 
回复"并发导图"获取Java并发编程思维导图(xmind终极版)

Otro: haga clic en [ Mis beneficios ] para tener más sorpresas.

Supongo que te gusta

Origin blog.csdn.net/wujialv/article/details/115325050
Recomendado
Clasificación