Red de conocimiento informático - Problemas con los teléfonos móviles - Varias formas de persistencia de Redis: análisis en profundidad de RDB

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

Haga clic en "Comunidad china de Java" arriba y seleccione "Establecer como estrella"

Aprendizaje permanente, ¡programar es divertido!

Redis lee y escribe en la memoria, por lo que tiene un alto rendimiento, pero los datos en la memoria se perderán cuando el servidor se reinicie. Para garantizar que los datos no se pierdan, debemos almacenarlos. datos en la memoria al disco, de modo que Redis pueda restaurar los datos originales del disco al reiniciar, y todo el proceso se llama persistencia de Redis.

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

1. Varios métodos de persistencia

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

Instantánea (RDB, Redis DataBase), que mostrará los datos en un punto en el tiempo se escribe en el disco en forma binaria;

Solo se agrega el archivo (AOF, Append Only File). AOF (Append Only File) registra todos los comandos y los agrega al archivo como texto;

La persistencia híbrida es una nueva característica de Redis 4.0, que combina las ventajas de RDB y AOF. el comienzo del archivo en forma de RDB y los comandos posteriores se almacenan en el archivo en formato AOF. Esto garantiza la velocidad cuando se reinicia Redis y al mismo tiempo minimiza el riesgo de pérdida de datos.

Dado que cada escenario de persistencia tiene casos de uso específicos, comencemos con la persistencia RDB.

2. Introducción a RDB

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

3. Disparadores de persistencia

RDB tiene dos tipos de disparadores de persistencia: disparadores manuales y disparadores automáticos.

1) Activadores manuales

Hay dos activadores manuales para la persistencia: guardar y bgsave. La principal diferencia entre ellos es si bloquearán la ejecución del hilo principal de Redis.

①comando guardar

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

El comando guardar se usa de la siguiente manera:

Como se puede ver en la figura, después de ejecutar el comando guardar, la hora de modificación del archivo persistente dump.rdb ha cambiado, lo que significa que la persistencia de guardar RDB se activó con éxito. El proceso de ejecución del comando guardar se muestra en la siguiente figura:

② comando bgsave

bgsave (guardar en segundo plano) se refiere al guardado en segundo plano. La mayor diferencia entre este y el comando guardar. es que bgsave fork() Se utiliza un proceso hijo para realizar persistencia. Todo el proceso solo se bloqueará temporalmente cuando fork() el proceso hijo. Una vez creado el proceso hijo, el proceso principal de Redis puede responder a solicitudes de otros. clientes. En comparación, todo el proceso está bloqueado. En comparación con el comando guardar que bloquea todo el proceso, el comando bsgsave es obviamente más adecuado para nuestro uso. El proceso de uso del comando bsgsave se muestra en la siguiente figura:

El proceso de ejecución de bsgsave se muestra en la siguiente figura:

2) Activación automática

Después de haber completado RDB Después de la activación manual, veamos cómo activar automáticamente la persistencia de RDB. La persistencia automática de RDB proviene principalmente de las siguientes situaciones.

① save m n

save m n significa que si se cambian n claves en m segundos, la persistencia se activará automáticamente. Los parámetros myn se pueden encontrar en el archivo de configuración de Redis, por ejemplo, save601 significa que la persistencia de RDB se activa si al menos una clave cambia en 60 segundos.

La persistencia activada automáticamente significa esencialmente que Redis ejecuta automáticamente un comando bgsave cuando se cumplen las condiciones de activación establecidas. Nota: Cuando se configuran varios comandos save m n, cualquier condición activará la persistencia. Por ejemplo, configuramos los siguientes dos comandos save m n:

guardar 60 10

guardar 600 1

Si la clave de Redis cambia 10 veces en 60 segundos , se activará la persistencia; si la clave de Redis cambia menos de 10 veces en 60 segundos, Redis determinará si la clave de Redis ha cambiado al menos una vez en 600 segundos. Si la clave de Redis cambia menos de 10 veces en 60 segundos, Redis determinará si la clave de Redis se ha modificado al menos una vez en 600 segundos y, de ser así, se activará la persistencia.

② flusall

El comando flusall se utiliza para borrar la base de datos de Redis y debe usarse con precaución en un entorno de producción. Cuando Redis ejecuta el comando flusall, activa la persistencia automática y borra el archivo RDB. El resultado se muestra en la siguiente figura:

3 Activador de 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 el archivo RDB se enviará al nodo esclavo, y este proceso activa automáticamente la persistencia de Redis.

4. Configuración

Establecer correctamente la configuración de RDB puede garantizar que Redis se ejecute de manera eficiente y estable.

Los parámetros de configuración de RDB se pueden encontrar en el archivo de configuración de Redis, de la siguiente manera:

# Condiciones de guardado de RDB

guardar

9001

guardar

30010

guardar

6010000

# Si se deben dejar de conservar los datos en el disco después de que falla bgsave, sí significa detener la persistencia, no significa ignorar el error y continuar escribiendo en el archivo.

detener-escritura-en-bgsave-error sí

# Compresión de archivos RDB

compresión rdb sí

# Si se debe habilitar el archivo RDB comprobando, para comprobar si hay daños al escribir y leer archivos, y detener el inicio si la comprobación encuentra daños durante el inicio.

rdbchecksum sí

# nombre de archivo RDB

nombre de archivo db

volcado

.rdb

# directorio de archivos RDB

dir.

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

1) Guardar parámetros

Es utilizado para la configuración Parámetros que activan las condiciones de persistencia de RDB y persisten los datos en el disco duro cuando se cumplen las condiciones de guardado. La configuración predeterminada es la siguiente:

guardar 900 1: si hay al menos 1 cambio de valor clave en 900 segundos, los datos se conservarán en el disco duro

guardar 300; 10: si dentro de 300 si hay al menos 10 cambios de valores clave en segundos, los datos se conservarán en el disco duro;

guardar 60 10000: si hay al menos 10 000 cambios de valores clave en 60 segundos , los datos se conservarán en el disco duro.

guardar 60 10000: si al menos 10000 valores clave cambian en 60 segundos, los datos se conservarán en el disco duro.

② parámetro rdbcompression

El valor predeterminado es sí para habilitar la compresión de archivos RDB, y Redis usa el algoritmo LZF para la compresión. Si no desea consumir el rendimiento de la CPU para la compresión de archivos, puede desactivarla, lo que tiene la desventaja de requerir más espacio en disco para guardar el archivo.

3) Parámetro rdbchecksum

El valor predeterminado es sí, lo que indica si se activa la verificación de archivos RDB para verificar si hay daños al escribir y leer archivos, y comenzar cuando se encuentra la verificación Detener comenzando si hay daño en el proceso.

5. Consulta de configuración

Redis le permite utilizar comandos para consultar los parámetros de configuración actuales. El formato del comando de consulta es: configgetxxx. Por ejemplo, para obtener la configuración del nombre de almacenamiento del archivo RDB, puede usar configgetdbfilename. El resultado de la ejecución se muestra a continuación:

Para consultar el directorio del archivo RDB. , puede utilizar el comando configgetdir. El resultado de la ejecución se muestra en la siguiente figura:

6. Ajustes de configuración

La configuración de RDB se puede realizar de las dos formas siguientes:

Modifique manualmente el archivo de configuración de Redis;

p>

Use la línea de comando para establecer la configuración, por ejemplo, use configsetdir "/usr/data" para modificar el almacenamiento RDB directorio.

Nota: La modificación manual del archivo de configuración de Redis es válida globalmente, es decir, incluso si se reinicia el servidor Redis, los parámetros no se perderán, mientras que las modificaciones realizadas mediante la línea de comando se perderán después. reiniciando Redis. Sin embargo, modificar manualmente el archivo de configuración de Redis requiere reiniciar el servidor de Redis para que surta efecto de inmediato, mientras que usar el método de línea de comando no requiere reiniciar el servidor de Redis.

Consejo: El archivo de configuración de Redis se encuentra en el directorio raíz del directorio de instalación de Redis y su 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 los datos persistentes. . 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

Cuando se inicia Redis, habrá información de registro que muestra si el archivo RDB está cargado. Ejecutamos el comando de inicio de Redis: src/redis-server redis.conf, como se muestra a continuación:

Desde el registro, podemos ver que el servicio Redis ha cargado el archivo RDB normalmente al iniciarse.

Consejo: Durante la carga del archivo RDB, el servidor Redis permanecerá bloqueado hasta que se complete la carga.

8. Ventajas y desventajas de RDB

1) Ventajas de RDB

El contenido de RDB son datos binarios, que ocupan menos memoria, son más compactos. , y es más adecuado para usarse como archivo de respaldo;

RDB es muy útil en la recuperación de desastres, como archivo compacto, se puede transferir al servidor remoto más rápido para la recuperación del servicio Redis

;

RDB Puede mejorar en gran medida la velocidad de ejecución de Redis, porque cada vez que persiste, el proceso principal de Redis bifurcará () un proceso secundario para conservar los datos en el disco, y el proceso principal de Redis no realizará operaciones como como E/S de disco.

Los archivos RDB se reinician mucho más rápido que los archivos en formato AOF.

2) Desventajas de RDB

Dado que RDB solo puede guardar datos durante un cierto intervalo de tiempo, si el servicio Redis finaliza inesperadamente en medio del proceso, los datos de Redis dentro de un cierto se perderá un período de tiempo;

RDB debe bifurcarse() con frecuencia para persistir en el disco mediante procesos secundarios. Si el conjunto de datos es grande, fork() puede llevar mucho tiempo, y si el conjunto de datos es grande y el rendimiento de la CPU es deficiente, puede hacer que Redis deje de atender a los clientes durante unos milisegundos o incluso un segundo.

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 comando configsetsave"" cuando se conecte al cliente para deshabilitar la persistencia de Redis, como se muestra en la siguiente figura:

10. Puede aprender sobre RDB La persistencia se divide en dos métodos: activación manual y activación automática. La ventaja es que el archivo de almacenamiento es pequeño y la velocidad de recuperación de datos es más rápida cuando se inicia Redis. Restaurar archivos RDB también es muy simple. Simplemente coloque los archivos RDB en el directorio raíz de Redis y Redis cargará y restaurará automáticamente los datos cuando se inicie.

11. Preguntas de reflexión

Si el uso de CPU del servidor Redis es demasiado alto, ¿cuál puede ser el motivo?

Los lectores pueden escribir sus propias respuestas en el área de comentarios.

FIN

Siga el código QR a continuación y suscríbase para obtener más contenido interesante

Autor: Lao Wang

Volver a publicar es para ver mejor

Autores raros

Varios métodos de persistencia de Redis: análisis en profundidad de RDB

Etiquetas: Crear archivos leídos Seleccionar errores manuales Precauciones Verificar archivos de respaldo Programación