Directorio de artículos
caché distribuido
Existe Redis de un solo nodo:
- Problema de pérdida de datos: cuando un solo nodo deja de funcionar, se pierden datos.
- Problemas de simultaneidad y capacidad de almacenamiento: la cantidad de simultaneidad que puede satisfacer un solo nodo y la cantidad de datos que se pueden almacenar son limitadas.
- Problema de recuperación de fallas: si Redis deja de funcionar y el servicio no está disponible, se necesita un método automático de recuperación de fallas.
Persistencia de Redis
persistencia de RDB
RDB (archivo de copia de seguridad de la base de datos de Redis, archivo de copia de seguridad de la base de datos de Redis)
Al comienzo de bgsave, el proceso principal se bifurcará para obtener el proceso secundario, y el proceso secundario compartirá los datos de la memoria del proceso principal. Una vez completada la bifurcación, los datos de la memoria se leerán y escribirán en el archivo RDB. . fork utiliza tecnología de copia en escritura:
- Cuando el proceso principal realiza una operación de lectura, accede a la memoria compartida.
- Cuando el proceso principal realiza una operación de escritura, se copia una copia de los datos y se realiza la operación de escritura.
Persistencia AOF
El nombre completo de AOF es Append Only File (archivo adjunto). Cada comando de escritura procesado por Redis se registrará en el archivo AOF, que puede considerarse como un archivo de registro de comandos.
Redis maestro-esclavo
Principio de sincronización de datos de Redis
sincronización completa
La primera sincronización entre los nodos maestro y esclavo adopta una sincronización completa, y el proceso de sincronización completa es el siguiente:
- El nodo esclavo solicita sincronización incremental
- El nodo maestro juzga la respuesta. Si la identificación es inconsistente y rechaza la sincronización incremental, la inconsistencia de la identificación indica que es la primera sincronización. El maestro devolverá la información de la versión de datos del maestro e intentará establecer una sincronización completa.
- Una vez que el esclavo la recibe, guarda la información de la versión.
- El nodo maestro ejecuta bgsave para generar un RDB. Todos los comandos durante la generación del RDB se guardarán en el repl-backlog y luego el archivo RDB se enviará al esclavo.
- Después de que el esclavo recibe el archivo RDB, borra los datos locales y carga el archivo RDB enviado por el nodo maestro.
- El nodo maestro posterior enviará el archivo repl-baklog y el esclavo ejecuta los comandos que contiene después de recibirlo para mantener los datos sincronizados con el maestro.
Sincronización incremental
La primera sincronización maestro-esclavo es una sincronización completa, pero si el esclavo se reinicia y sincroniza, realizará una sincronización incremental .
Centinela de Redis
El papel y el principio del centinela.
¿Cuáles son las tres funciones del centinela?
- monitor
- conmutación por error
- notificar
¿Cómo juzga Sentinel si una instancia de Redis está en buen estado?
- Envíe un comando ping cada 1 segundo. Si no hay respuesta después de un cierto período de tiempo, se considera una conexión subjetiva
- Si más de la mitad de los centinelas creen subjetivamente que la instancia está fuera de línea, se considera que el servicio está fuera de línea objetivamente.
Después de que el maestro falla, ¿cuál es el proceso de selección de un nuevo maestro?
¿Cuáles son los pasos para la conmutación por error?
- Primero seleccione un esclavo como nuevo maestro, ejecute esclavo de nadie
- Luego deje que todos los nodos ejecuten esclavo del nuevo maestro
- Modifique la configuración del nodo defectuoso, agregue esclavo del nuevo maestro
Configure el modo centinela RedisTemplate en el proyecto
paso:
Clúster de fragmentos de Redis
Master-slave y Sentinel pueden resolver los problemas de alta disponibilidad y alta concurrencia, pero todavía quedan dos problemas que no se han resuelto:
- Problema de almacenamiento masivo de datos.
- El problema de la alta lectura y escritura concurrentes
Hay varios maestros en el clúster de fragmentación y cada maestro puede tener múltiples nodos esclavos. Los maestros monitorean el estado de salud de los demás a través de ping. En este momento, el mecanismo centinela ya no es necesario.
Ranura de hash de Redis
Redis asignará un nodo maestro a 0-16383 ranuras y la clave de los datos no está vinculada al nodo, sino a la ranura.
¿Cómo determina Redis en qué instancia debe estar una clave?
- Asigne 16384 espacios a diferentes instancias.
- Calcule el valor hash en función de la parte efectiva de la clave, tomando el resto de 16384.
- El resto se utiliza como ranura, simplemente busque la instancia donde se encuentra la ranura.
¿Cómo guardar el mismo tipo de datos en la misma instancia de Redis?
- Este tipo de datos utiliza la misma parte efectiva, por ejemplo, todas las claves tienen el prefijo {typeid}.
Escalado del clúster de Redis
El concepto de escalado de clúster es agregar y eliminar nodos dinámicamente.
Clúster de fragmentación de acceso a la configuración de RedisTemplate en el proyecto
Caché multinivel de Redis
El caché multinivel sirve para aprovechar al máximo cada enlace de procesamiento de solicitudes, agregar el caché por separado, reducir la presión sobre Tomcat y mejorar el rendimiento del servicio.
- navegador, caché del cliente
- Caché local de Nginx
- caché de Redis
- Caché de procesos Tomcat
caché de proceso JVM
Cafeína
Caffeine implementa el caso de almacenamiento en caché de procesos locales
Paso 1:
cree una clase de configuración de caché y cree dos objetos Bean almacenados en caché:
Paso 2:
inyecte el objeto de caché donde se usa y escriba la consulta de caché y la lógica comercial de pérdida de caché.
Experiencia de combate de Redis
Diseño de valor clave de Redis
Estructura clave elegante
Resolver clave grande
Elija el tipo de datos apropiado
Desmonte la tabla hash grande en tablas hash pequeñas:
optimización por lotes
Mediante la ejecución por lotes, se reduce el tiempo de transmisión de la red.
tubería
Procesamiento por lotes bajo el clúster
Redistemplate de Spring ya proporciona procesamiento por lotes en el grupo de ranuras paralelas.
Optimización del lado del servidor
configuración persistente
Aunque la persistencia de Redis puede garantizar la seguridad de los datos, también generará una gran sobrecarga adicional, así que siga las siguientes sugerencias para la persistencia:
- La instancia de Redis utilizada para el almacenamiento en caché no debe permitir la persistencia tanto como sea posible, porque los datos para el almacenamiento en caché solo sirven para acelerar la velocidad de respuesta y la importancia no es tan alta. Pero para los datos utilizados para bloqueos distribuidos, se debe habilitar la persistencia para garantizar la seguridad de los datos.
- Se recomienda desactivar la función de persistencia RDB y utilizar la persistencia AOF. Aunque la persistencia de RDB ocupa menos archivos y se restaura más rápido, puede ocurrir pérdida de datos durante el proceso de bifurcación de RDB y la generación de archivos RDB.
- Utilice el script para realizar RDB periódicamente en el nodo esclavo para realizar una copia de seguridad de los datos .
consulta lenta
configuración de memoria