Instalación de redis de la versión de Linux y configuración del clúster

1. Instale la versión Linux de redis

1. Instalación y prueba

1: instalar el entorno wget

yum -y install wget

2: cargue el paquete comprimido de redis

3: Ejecute el comando (instale el entorno de lenguaje c)

yum install gcc

4: Después de la descompresión, ingrese al directorio raíz de redis y ejecute make compilación

make

4: Después de una compilación exitosa, ingrese: make install

make install

5: Inicie redis (ingrese src en el directorio de redis y ejecute el siguiente comando) Utilice el archivo redis.conf para iniciar

./redis-server ../redis.conf

2. Persistencia de Redis

Redis es una base de datos en memoria. Cuando se reinicia el servidor de Redis o se reinicia la computadora, los datos se perderán. Podemos conservar los datos en la memoria de Redis en un archivo en el disco duro.

Redis proporciona dos métodos de persistencia:

RDB: instantánea, guardada y persistente desde el servidor

​ AOF: Registro, la operación genera registros relevantes y recupera datos a través de los registros. CouchDB no modifica el contenido de los datos, solo los agrega, por lo que el archivo en sí es un registro y no se perderá ningún dato.

1. El nombre completo de RDB es persistencia del archivo de copia de seguridad de la base de datos de Redis (archivo de copia de seguridad de datos de Redis).

Escriba la instantánea del conjunto de datos en la memoria en el disco dentro del intervalo de tiempo especificado, que en la jerga es la instantánea de instantánea. Cuando se restaura, el archivo de instantánea se lee directamente en la memoria. Redis creará (bifurcación) un subproceso por separado. Para la persistencia, los datos primero se escribirán en un archivo temporal. Una vez completado el proceso de persistencia, este archivo temporal se utilizará para reemplazar el último archivo persistente. Durante todo el proceso, el proceso principal no realiza ninguna operación IO, lo que garantiza un rendimiento extremadamente alto. Si se requiere una recuperación de datos a gran escala y la integridad de la recuperación de datos no es muy sensible, el método RDB es más eficiente que el método AOF. .de alta eficiencia. La desventaja de RDB es que los datos posteriores a la última persistencia pueden perderse.

Nota: La función de fork es copiar un proceso que es el mismo que el proceso actual. Todos los datos (variables, variables de entorno, contadores de programa, etc.) del nuevo proceso tienen los mismos valores que el proceso original, pero es un proceso completamente nuevo y sirve como proceso hijo del proceso original. Cuando se inicia el servidor Redis, se volcará automáticamente. Todos los pares clave-valor del archivo .rdb se leen en la memoria.

Insertar descripción de la imagen aquí

Edite el archivo de configuración redis.conf

RDB快照相关参数:
	save 900 1    #刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后至少1个关键字发生变化。
	save 300 10  #必须是300秒之后至少10个关键字发生变化。
	save 60 10000 #必须是60秒之后至少10000个关键字发生变化。
	上面三个参数屏闭后,rdb方式就关闭了
	
	stop-writes-on-bgsave-error yes    #后台存储错误停止写。
	rdbcompression yes    #使用LZF压缩rdb文件。
	rdbchecksum yes    #存储和加载rdb文件时校验。
	dbfilename dump.rdb    #设置rdb文件名。
	dir ./    #设置工作目录,rdb文件会写入该目录。

Insertar descripción de la imagen aquí

2. Persistencia del registro AOF

config set appendonly yes
或者进入redis.conf 修改 appendonly = yes 默认是no

Principio de registro AOF

Insertar descripción de la imagen aquí

Idea: cada vez que se escribe un elemento en la memoria, se realiza una copia de seguridad. El intervalo de tiempo es de 1 segundo. Desventajas: el archivo es grande y las operaciones de escritura son frecuentes.

  • Registre cada operación de escritura en forma de registro y registre todas las instrucciones de escritura ejecutadas por Redis (las operaciones de lectura no se registran).

  • Solo se pueden agregar archivos pero no reescribir. Cuando se inicia Redis, leerá el archivo (archivo aof) y reconstruirá los datos. En otras palabras, cuando se reinicie Redis, ejecutará las instrucciones de escritura de adelante hacia atrás de acuerdo con el contenido de el archivo de registro para completar los datos. Volver al trabajo

  • aof guarda el archivo appendonly.aof

AOF日志相关参数:
	appendonly no # 是否打开aof日志功能  no:不开启   yes:开启日志
	appendfsync always   # 每1个命令,都立即同步到aof. 安全,速度慢
				everysec # 折衷方案,每秒写1次
				no      # 写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof. 同步频率低,速度快
	no-appendfsync-on-rewrite  no # 正在导出rdb快照的过程中,要不要停止同步aof

Configurar para habilitar el registro AOF

Insertar descripción de la imagen aquí

Configurar plan de almacenamiento

Insertar descripción de la imagen aquí

3. Reescritura de AOF

Pensamiento: si se realizan varias operaciones en la misma tecla, ¿cómo mostrar los registros de operación en el registro AOF, uno o n?

Caso : Crear edad y cambiar el valor cinco veces

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

El registro registrará cada paso de la operación. Si se opera una tecla varias veces, solo habrá una actuación en los datos pero n registros en el registro. ¿Cómo encontrar el valor correcto cuando se pierden datos y es necesario recuperarlos?

Una forma de reescribir es invertir la clave y el valor en la memoria en comandos de redis y guardarlos en el registro, que es como un resumen de las operaciones realizadas.

aof重写相关参数:
	no-appendfsync-on-rewrite  no # 正在导出rdb快照的过程中,要不要停止同步aof
	auto-aof-rewrite-percentage 100 #aof文件大小比起上次重写时的大小,增长率100%时,重写
	auto-aof-rewrite-min-size 64mb #aof文件,至少超过64M时,重写

Pregunta: Durante el proceso de volcado de rdb, si aof deja de sincronizarse, ¿se perderá?

Respuesta: No, todas las operaciones se almacenan en caché en la cola de memoria y una vez completado el volcado, las operaciones se unifican.

P: ¿Qué significa una reescritura?

Respuesta: La reescritura de Aof se refiere a convertir los datos de la memoria en comandos y escribirlos en el registro de aof para resolver el problema de que el registro de aof sea demasiado grande.

Pregunta: Si existen tanto el archivo rdb como el archivo aof, ¿cuál debería usarse primero para recuperar los datos?

Respuesta: aof

Pregunta: ¿Se pueden utilizar los dos tipos al mismo tiempo?

Respuesta: Sí, y es recomendable.

Pregunta: ¿Cuál es más rápido de restaurar, rdb o aof?

Respuesta: RDB es rápido porque es un mapeo de memoria de datos y se carga directamente en la memoria, mientras que AOF es un comando y debe ejecutarse uno por uno.

问题思考:在使用rdb做持久化时,我们关掉了redis服务,然后重新打开,保存的数据还在。但在做aof的时候我们将redis服务关闭后再打开数据就没有了。在上面不是配置过rdb持久化吗,为什么没起作用?
答:当rdb中有数据,并开启了AOF选项,重启redis服务后会产生一个空的aof文件,当rdb和aof文件都存在,会以aof文件来恢复数据。

3. Publicación y suscripción de mensajes de Redis.

La publicación y suscripción de Redis (pub/sub) es un modelo de comunicación de mensajes: el remitente (pub) envía mensajes y los suscriptores (sub) reciben mensajes.

Los clientes de Redis pueden suscribirse a cualquier cantidad de canales.

Insertar descripción de la imagen aquí

Caso: Crear un terminal de suscripción de mensajes

./redis-cli --raw   --打开redis客户端
SUBSCRIBE woniu     --订阅蜗牛频道信息

Caso: Crear un editor de mensajes

PUBLISH woniu '你好'  --发布 ”你好“ 信息

Cuarto, configuración del clúster redis

1. replicación maestro-esclavo de redis (maestro/esclavo)

A. Estructura del grupo

Tres nodos: un nodo maestro y dos nodos esclavos

B. Preparar instancias y configuraciones.

Abra tres instancias de Redis en la máquina virtual para simular el modo de clúster maestro-esclavo, la información es la siguiente:

IP correo Role
127.0.0.1 7001 maestro
127.0.0.1 7002 esclavo
127.0.0.1 7003 esclavo

1. Cree tres carpetas en el directorio redis:

2. Copie redis.conf en tres carpetas:

 cp /redis/redis-6.0.6/redis.conf /redis/7001
 cp /redis/redis-6.0.6/redis.conf /redis/7002
 cp /redis/redis-6.0.6/redis.conf /redis/7003

3. Modifique el puerto en el archivo, la ubicación de almacenamiento del archivo RDB y la IP declarada por la instancia de redis.

Por ejemplo, instancia 7001:

dir ../../7001
port 7001

4. Inicie tres servicios e ingrese al directorio src.

Por ejemplo, inicie la instancia 7001:

./redis-server ../../7001/redis.conf

5. Conéctese al cliente redis

Por ejemplo, conéctese a la instancia 7001:

./redis-cli -p 7001

C. Abrir la relación amo-esclavo.

Establezca una relación maestro-esclavo mediante comandos:

Por ejemplo, conéctese al cliente 7002 y ejecute el comando, 7002 se convierte en el nodo esclavo de 7001.

redis-cli -p 7002 abre rápidamente el cliente de un puerto determinado

SLAVEOF 127.0.0.1 7001
D. Verificar la relación maestro-esclavo

Ingrese al cliente de 7001 e ingrese el comando

info replication

Principio de sincronización maestro-esclavo

Principio: la primera vez que el nodo esclavo envía una solicitud, trae su propia respuesta y compensación. El nodo maestro juzga si es consistente con su propia réplica y la pasa al nodo esclavo. El nodo esclavo guarda la información de la versión. El nodo maestro El nodo ejecuta bgsave para generar el archivo RDB y lo sincroniza con el nodo esclavo, y el nodo esclavo carga el archivo RDB para lograr la sincronización de datos. En este momento, si se produce una operación de modificación en el nodo maestro, se generará un registro repl-baklog. generado.

2. Modo centinela (centinela)

¿Qué pasa si el nodo maestro deja de funcionar?

Monitoreo: Sentinel verifica continuamente si su maestro y esclavo funcionan como se esperaba

Recuperación automática de fallas: si el maestro falla, Sentinel promoverá un esclavo a maestro. Cuando la instancia fallida se recupere, el nuevo maestro será el maestro.

Notificación: Sentinel actúa como una fuente de descubrimiento de servicios para el cliente de Redis. Cuando se produce una conmutación por error en el clúster, la información más reciente se enviará al cliente de Redis.

Detección del estado del servicio Sentinel, enviando un comando ping a cada instancia del clúster cada segundo

Fuera de línea subjetiva: si un nodo centinela descubre que una instancia no responde dentro del tiempo especificado, se considera que la instancia está fuera de línea subjetiva.

Objetivo fuera de línea: si todos los centinelas que exceden el número de ejecuciones (quórum) consideran que la instancia está fuera de línea, la instancia estará objetivamente fuera de línea (el número de quórum es preferiblemente más de la mitad del número total de instancias).

IP correo Role
127.0.0.1 27001 maestro
127.0.0.1 27002 esclavo
127.0.0.1 27003 esclavo

1. Cree tres carpetas en el directorio redis:

Insertar descripción de la imagen aquí

2. Crea un nuevo archivo sentinel.conf

Tome 27001 como ejemplo:

port 27001
sentinel monitor mymaster 127.0.0.1 7001 2
sentinel down-after-milliseconds mymaster 50000
sentinel failover-timeout mymaster 180000
dir "/ding/s1"

3. Inicie e ingrese al directorio src.

redis-sentinel ../../s1/sentinel.conf

Supongo que te gusta

Origin blog.csdn.net/lanlan112233/article/details/130134302
Recomendado
Clasificación