Varias formas de persistencia de Redis: análisis en profundidad de RDB

La persistencia de Redis también es una de las principales diferencias entre Redis y Memcached, porque Memcached no tiene función de persistencia.

1. Varios métodos de persistencia

La persistencia de Redis tiene los siguientes tres métodos:

Método de instantánea (RDB, Redis DataBase) Los datos de la memoria se escriben en el disco. en forma binaria;

El modo de agregar archivos (AOF, Append Only File) registra todos los comandos de operación y los agrega al archivo en forma de texto;

Método de persistencia híbrido, un nuevo Después de Redis 4.0, la persistencia híbrida combina las ventajas de RDB y AOF. Al escribir, los datos actuales se escriben primero al principio del archivo en forma de RDB y luego se almacenan los comandos de operación posteriores en el archivo en formato AOF. No solo puede garantizar la velocidad de reinicio de Redis, sino también reducir el riesgo de pérdida de datos.

Debido a que cada solución de persistencia tiene escenarios de uso específicos, comencemos con la persistencia de RDB.

2. Introducción a RDB

RDB (Redis DataBase) es el proceso de escribir una instantánea de memoria (Snapshot) en un momento determinado en el disco en forma binaria.

3. Activación de persistencia

RDB? Hay dos tipos de métodos de activación de persistencia: uno es activación manual y el otro es activación automática.

1) Activación manual

Hay dos operaciones para activar manualmente la persistencia: ¿guardar y bgsave? La principal diferencia entre ellas es: si se debe bloquear la ejecución del hilo principal de Redis.

① comando save?

¿La ejecución del comando save? en el cliente activará la persistencia de Redis, pero también pondrá a Redis en un estado de bloqueo hasta que se complete la persistencia de RDB. , responderá a los comandos enviados por otros clientes, por lo que debe usarse con precaución en un entorno de producción.

El comando save? se usa de la siguiente manera:

Como se puede ver en la imagen, después de ejecutar el comando save?, ¿el tiempo de modificación del archivo persistente dump.rdb? cambios Esto significa que guardar activó correctamente la persistencia de RDB.

proceso de ejecución del comando save?, como se muestra en la siguiente figura:

② comando bgsave?

bgsave (guardar en segundo plano) significa guardar en segundo plano, es el Lo mismo que guardar. La mayor diferencia entre los comandos ?es que bgsave? bifurcará () un proceso secundario para realizar persistencia durante todo el proceso, solo hay un breve tiempo de bloqueo cuando el proceso secundario se bifurca (). Después de crearlo, el proceso principal de Redis puede responder. Se han producido solicitudes de otros clientes. En comparación con el comando guardar que bloquea todo el proceso, el comando bgsave es obviamente más adecuado para nuestro uso.

El comando bgsave? se utiliza como se muestra en la siguiente figura:

El proceso de ejecución de bgsave? es como se muestra en la siguiente figura:

2) Activación automática

Después de hablar sobre el método de activación manual de RDB, veamos cómo activar automáticamente la persistencia de RDB.

¿RDB? La persistencia automática proviene principalmente de las siguientes situaciones.

① guardar m n

¿guardar m n? significa que si n claves cambian en m segundos, la persistencia se activará automáticamente.

Los parámetros m? y ?Persistencia.

La esencia de activar automáticamente la persistencia es que Redis juzgará y ejecutará automáticamente un comando bgsave si se cumplen las condiciones de activación establecidas.

Nota: Al configurar varios comandos save m n, la persistencia se activará cuando se cumpla cualquier condición.

Por ejemplo, configuramos los dos siguientes comandos save m n:

guardar 60 10

guardar 600 1

Si dentro de 60 segundos Si el valor de la clave de Redis cambia 10 veces, se activará la persistencia si el valor de la clave de Redis cambia menos de 10 veces en 60 segundos, Redis determinará si el valor de la clave de Redis se ha modificado al menos una vez en 600 segundos. motivado.

② flusall

El comando flusall? se usa para borrar la base de datos de Redis. Debe usarse con precaución en un entorno de producción. Cuando Redis ejecuta el comando flusall? se activará. ?El archivo RDB se borra.

Los resultados de la ejecución se muestran en la siguiente figura:

③ Activación de la sincronización maestro-esclavo

En la replicación maestro-esclavo de Redis, cuando el nodo esclavo realiza una operación de replicación completa, el nodo maestro ejecutará el comando bgsave y enviará el archivo RDB al nodo esclavo. Este proceso activará automáticamente la persistencia de Redis.

4. Instrucciones de configuración

Configurar correctamente la configuración de RDB puede garantizar el funcionamiento eficiente y estable de Redis. Echemos un vistazo a los elementos de configuración de RDB.

Los parámetros de configuración de RDB se pueden encontrar en el archivo de configuración de Redis. El contenido específico es el siguiente:

# condiciones de guardado de RDB

guardar 900 1

guardar 300 10

guardar 60 10000

# Después de que falla bgsave, si se deben dejar de persistir los datos en el disco, sí significa dejar de persistir, no significa ignorar el error y continuar escribiendo archivos.

detener-escritura-en-bgsave-error sí

# Compresión de archivos RDB

compresión rdb sí

# Escribir archivos y leer si para habilitar la verificación de archivos RDB al recuperar archivos para verificar si hay algún daño. Si se encuentran daños durante el inicio, se detendrá el inicio.

rdbchecksum sí

# nombre de archivo RDB

dbfilename dump.rdb

# directorio de archivos RDB

dir ./

Los parámetros más importantes son los siguientes:

① parámetro de guardado

Se utiliza para configurar parámetros que activan las condiciones de persistencia de RDB para cumplir con las condiciones de guardado. Los datos se conservarán en el disco duro.

La descripción de la configuración predeterminada es la siguiente:

guardar 900 1: indica que si al menos 1 valor clave cambia en 900 segundos, los datos se conservarán en el disco duro <; /p>

guardar 300 10: indica que si al menos 10 valores clave cambian en 300 segundos, los datos se conservarán en el disco duro;

guardar 60 10000: indica que si Al menos 10.000 valores clave cambian en 60 segundos y luego conservan los datos en el disco duro.

② parámetro de compresión rdb

¿Su valor predeterminado es sí? Significa activar la compresión de archivos RDB y Redis utilizará el algoritmo LZF para la compresión. Si no desea consumir el rendimiento de la CPU para la compresión de archivos, puede desactivar esta función. La desventaja de esto es que se requiere más espacio en disco para guardar archivos.

③ parámetro rdbchecksum

¿Su valor predeterminado es sí? Indica si se habilita la verificación de archivos RDB al escribir y leer archivos, y verificar si hay algún daño si se verifica al inicio. Si encuentra daños, deje de arrancar.

5. Consulta de configuración

Puedes utilizar comandos para consultar los parámetros de configuración actuales en Redis.

El formato del comando de consulta es: config get xxx. Por ejemplo, si desea obtener la configuración del nombre de almacenamiento del archivo RDB, puede usar config get dbfilename. El efecto de ejecución se muestra en la siguiente figura:

Para consultar el directorio de archivos de RDB, puede utilizar El efecto de ejecución del comando config get dir es como se muestra en la siguiente figura:

6. >Establezca la configuración de RDB de las dos maneras siguientes:

Modifique manualmente el archivo de configuración de Redis;

Utilice la configuración de la línea de comandos, por ejemplo, utilice ?config set dir "/usr/data "? para modificar el directorio de almacenamiento RDB.

Nota: La modificación manual del archivo de configuración de Redis tiene efecto global, es decir, los parámetros de configuración no se perderán cuando se reinicie el servidor de Redis. Sin embargo, el uso de la modificación del comando se perderá después de reiniciar Redis. Sin embargo, si desea modificar manualmente el archivo de configuración de Redis para que surta efecto de inmediato, debe reiniciar el servidor de Redis, mientras que el método de comando no requiere reiniciar el servidor de Redis.

Consejos: El archivo de configuración de Redis se encuentra en la ruta raíz del directorio de instalación de Redis y el nombre predeterminado es redis.conf.

7.Recuperación de archivos RDB

Cuando se inicia el servidor Redis, si el archivo RDB dump.rdb existe en el directorio raíz de Redis, Redis cargará automáticamente el archivo RDB para restaurar la persistencia. datos.

Si no hay ningún archivo dump.rdb en el directorio raíz, primero mueva el archivo dump.rdb al directorio raíz de Redis.

Verifique si el archivo RDB está cargado

Redis tendrá información de registro durante el inicio, que mostrará si el archivo RDB está cargado. Ejecutamos el comando de inicio de Redis: src/redis -. servidor redis.conf, como se muestra en la siguiente figura:

Como se puede ver en el registro, el servicio Redis ha cargado el archivo RDB normalmente cuando se inició.

Consejos: Mientras el servidor Redis carga el archivo RDB, se bloqueará hasta que se complete el trabajo de carga.

8. Ventajas y desventajas de RDB

1) Ventajas de RDB

El contenido de RDB son datos binarios, ocupa menos memoria, es más compacto y más adecuado. como archivo de respaldo;

RDB es muy útil para la recuperación ante desastres. Es un archivo compacto que se puede transferir al servidor remoto más rápido para la recuperación del servicio Redis;

RDB se puede utilizar para. Mejore en mayor medida la velocidad de ejecución de Redis, porque el proceso principal de Redis bifurcará () un proceso secundario cada vez que persista para conservar los datos en el disco, y el proceso principal de Redis no realizará operaciones como el disco I /. O;

Los archivos RDB se pueden reiniciar más rápido que los archivos en formato AOF.

2) Desventajas de RDB

Debido a que RDB solo puede guardar datos durante un cierto intervalo de tiempo, si el servicio Redis finaliza inesperadamente a mitad de camino, los datos de Redis durante un período de tiempo se perderán. lost;

RDB requiere fork() frecuente para conservarlo en el disco utilizando procesos secundarios. Fork() puede llevar mucho tiempo si el conjunto de datos es grande y puede hacer que Redis deje de atender a los clientes durante unos milisegundos o incluso un segundo si el conjunto de datos es grande y el rendimiento de la CPU es deficiente.

9. Deshabilitar la persistencia

Deshabilitar la persistencia puede mejorar la eficiencia de ejecución de Redis. Si no es sensible a la pérdida de datos, puede ejecutar el conjunto de configuración mientras se conecta al cliente. El comando ""? puede desactivar la persistencia de Redis, como se muestra en la siguiente figura:

10. Resumen

A través de este artículo, ¿podemos saber que la persistencia de RDB se divide en activación manual? Hay dos métodos: activación automática y activación automática. Su ventaja es que el archivo de almacenamiento es pequeño y la recuperación de datos es más rápida cuando se inicia Redis. Restaurar archivos RDB también es muy simple. Solo necesita colocar los archivos RDB en el directorio raíz de Redis y los datos se cargarán y restaurarán automáticamente cuando se inicie Redis.

11. Preguntas de reflexión

Si el uso de CPU del servidor Redis es demasiado alto, ¿cuál puede ser la causa? Le invitamos a escribir sus respuestas en el área de comentarios.

12. Referencias y agradecimientos

blogs.com/ysocean/p/9114268.html

blogs.com/wdliu/p/9377278.html p>

Varias formas de persistencia de Redis: análisis en profundidad de RDB

Etiqueta: de forma predeterminada, los comandos se utilizan para bloquear múltiples inicios para obtener un resumen rojo de información de registro