Redis - 10, replicación maestro-esclavo

1. ¿Qué es?

Después de actualizar el maestro, se sincroniza automáticamente con el mecanismo maestro/esclavo de la máquina en espera de acuerdo con la configuración y la política. El maestro es principalmente para escribir y el esclavo es principalmente para leer.

2. ¿Qué puedo hacer?

  • Separación de lectura y escritura, expansión del rendimiento, reduce la presión en el servidor principal
  • Recuperación de desastres, recuperación rápida, cuando el maestro cuelga, el esclavo se convierte en maestro

3. Replicación maestro-esclavo: ¿cómo jugar?

3.1 Configurar 1 maestro y 2 esclavos

A continuación, configuremos el efecto de 1 maestro y 2 esclavos. En realidad, se necesitan 3 máquinas. Para mayor comodidad, haremos una demostración en una máquina y distinguiremos las máquinas a través de diferentes puertos. La configuración de 3 máquinas

Role puerto
maestro 6379
esclavo1 (esclavo) 6380
esclavo2 (esclavo) 6381

3.2, configurar maestro-esclavo

3.2.1 Crear un directorio de trabajo de casos: maestro-esclavo

Ejecute el siguiente comando para crear el directorio /opt/master-slave.Todas las operaciones esta vez se realizan en el directorio master-slave.

ps -ef | grep redis | awk -F" " '{print $2;}' | xargs kill -9 # 方便演示,停止所有的redis
mkdir /opt/master-slave
cd /opt/master-slave/

3.2.2 Copiar redis.conf al directorio maestro-esclavo

cp /opt/redis-6.2.1/redis.conf /opt/master-slave/

3.2.3 Crear un archivo de configuración maestro: redis-6379.conf

Cree un archivo redis-6379.conf en el directorio /opt/master-slave, el contenido es el siguiente, tenga en cuenta que 192.168.200.129 es la ip de la máquina de prueba, debe reemplazarla por la suya

#redis.conf是redis原配置文件,内部包含了很多默认的配置,这里使用include将其引用,相当于把redis.conf内容直接贴进来了
include /opt/master-slave/redis.conf
daemonize yes
bind 192.168.200.129
#配置密码
requirepass 123456
dir /opt/master-slave/
logfile /opt/master-slave/6379.log

#端口
port 6379
#rdb文件
dbfilename dump_6379.rdb
#pid文件
pidfile /var/run/redis_6379.pid

3.2.4 Crear el archivo de configuración de slave1: redis-6380.conf

Cree un archivo redis-6380.conf en el directorio /opt/master-slave, el contenido es el siguiente, similar al maestro anterior, con las siguientes 2 líneas agregadas

include /opt/master-slave/redis.conf
daemonize yes
bind 192.168.200.129
requirepass 123456
dir /opt/master-slave/

port 6380
dbfilename dump_6380.rdb
pidfile /var/run/redis_6380.pid
logfile /opt/master-slave/6380.log

#用来指定主机:slaveof 主机ip 端口
slaveof 192.168.200.129 6379
#主机的密码
masterauth 123456

3.2.5 Crear el archivo de configuración de slave2: redis-6381.conf

include /opt/master-slave/redis.conf
daemonize yes
bind 192.168.200.129
requirepass 123456
dir /opt/master-slave/

port 6381
dbfilename dump_6381.rdb
pidfile /var/run/redis_6381.pid
logfile /opt/master-slave/6381.log

#用来指定主机:slaveof 主机ip 端口
slaveof 192.168.200.129 6379
#主机的密码
masterauth 123456

3.2.6, iniciar el maestro

redis-server /opt/master-slave/redis-6379.conf

3.2.7, iniciar esclavo1

redis-server /opt/master-slave/redis-6380.conf

3.2.8, iniciar esclavo2

redis-server /opt/master-slave/redis-6381.conf

Si hay un error en el inicio, verifique cuidadosamente la configuración y también puede leer el registro. Los registros se generarán en el directorio /opt/master-slave cuando se inicien las tres máquinas, de la siguiente manera

3.2.9 Ver información del anfitrión

Conéctese al host a través del comando redis-cli, de la siguiente manera

redis-cli -h 192.168.200.129 -p 6379 -a 123456

Use el siguiente comando para ver la información del host

info Replication

3.2.10 Verificar la información del esclavo1

Consulta la información del esclavo slave1 a través de los siguientes dos comandos

redis-cli -h 192.168.200.129 -p 6380 -a 123456
info Replication

3.2.11, también verifique la información de slave2

redis-cli -h 192.168.200.129 -p 6381 -a 123456
info Replication

 3.2.12 Verificar el efecto de la sincronización maestro-esclavo

Ejecute los siguientes 2 comandos en el maestro

192.168.200.129:6379> flushdb
OK
192.168.200.129:6379> set name ready
OK
192.168.200.129:6379> set age 30
OK

Ejecute el siguiente comando en el esclavo1, se puede ver que los datos se han sincronizado

192.168.200.129:6380> mget name age
1) "ready"
2) "30"
192.168.200.129:6380>

Ejecútelo también en slave2, el efecto es el siguiente

192.168.200.129:6381> mget name age
1) "ready"
2) "30"
192.168.200.129:6381>

3.3 Principio de replicación maestro-esclavo

  • Después de que el esclavo se inicie y se conecte con éxito al maestro, enviará un mensaje de sincronización de datos al maestro (comando de envío de sincronización)
  • Después de que el maestro recibe el mensaje de sincronización de datos enviado por el esclavo, conserva los datos del servidor maestro en el archivo rdb y, al mismo tiempo, recopila los comandos recibidos para modificar los datos, y el maestro envía el archivo rdb a su esclavo. para completar una sincronización completa
  • Copia completa: después de que el servicio esclavo recibe el archivo rdb enviado por el maestro, lo guarda y lo carga en la memoria
  • Replicación incremental: el maestro continúa pasando los comandos de modificación recopilados al esclavo uno por uno para completar la sincronización
  • Pero siempre que el maestro se vuelva a conectar, se realizará automáticamente una sincronización completa (copia completa)

3.4 Resumen

3.4.1 ¿Qué sucede después de que el redis principal cuelga? ¿Está la máquina esclava en la posición superior o parada?

Después de que la máquina principal cuelgue, esperará la oportunidad de esperar a que el hermano menor se recupere y no usurpará el trono.

3.4.2 Después de que el esclavo cuelgue y reanude, ¿continuará sincronizando datos desde el maestro?

Sí, después de reiniciar, los datos que faltan seguirán sincronizándose.

3.4.3, información de replicación: ver información de replicación maestro-esclavo

Como se ha demostrado anteriormente, tanto el maestro como el esclavo pueden ejecutarse para ver la información maestro-esclavo.

4. Estructura maestro-esclavo de uso común

4.1, un maestro y dos esclavos

Lo que se acaba de demostrar arriba es un maestro y dos esclavos, pero se usan los archivos de configuración. De hecho, los esclavos se pueden configurar mediante comandos. Vamos a demostrarlo de nuevo, y todos son optimistas.

4.1.1 Crear un directorio de trabajo de casos: maestro-esclavo

Ejecute el siguiente comando para crear el directorio /opt/master-slave.Todas las operaciones esta vez se realizan en el directorio master-slave.

ps -ef | grep redis | awk -F" " '{print $2;}' | xargs kill -9 # 方便演示,停止所有的redis
mkdir /opt/master-slave
cd /opt/master-slave/

4.1.2 Copiar redis.conf al directorio maestro-esclavo

cp /opt/redis-6.2.1/redis.conf /opt/master-slave/

4.1.3 Crear un archivo de configuración maestro: redis-6379.conf

Cree un archivo redis-6379.conf en el directorio /opt/master-slave, el contenido es el siguiente, tenga en cuenta que 192.168.200.129 es la ip de la máquina de prueba, debe reemplazarla por la suya

include /opt/master-slave/redis.conf
daemonize yes
bind 192.168.200.129
requirepass 123456
dir /opt/master-slave/

port 6379
dbfilename dump_6379.rdb
pidfile /var/run/redis_6379.pid
logfile /opt/master-slave/6379.log

4.1.4 Crear el archivo de configuración de slave1: redis-6380.conf

Cree un archivo redis-6380.conf en el directorio /opt/master-slave, el contenido es el siguiente, similar al maestro anterior, simplemente reemplace 6379 con 6380

include /opt/master-slave/redis.conf
daemonize yes
bind 192.168.200.129
requirepass 123456
dir /opt/master-slave/

port 6380
dbfilename dump_6380.rdb
pidfile /var/run/redis_6380.pid
logfile /opt/master-slave/6380.log

4.1.5 Crear el archivo de configuración de slave2: redis-6381.conf

include /opt/master-slave/redis.conf
daemonize yes
bind 192.168.200.129
requirepass 123456
dir /opt/master-slave/

port 6381
dbfilename dump_6381.rdb
pidfile /var/run/redis_6381.pid
logfile /opt/master-slave/6381.log

4.1.6, iniciar el maestro

redis-server /opt/master-slave/redis-6379.conf

4.1.7, iniciar esclavo1

redis-server /opt/master-slave/redis-6380.conf

4.1.8, iniciar esclavo2

redis-server /opt/master-slave/redis-6381.conf

4.1.9 Inicie sesión en 3 máquinas respectivamente para verificar la información maestro-esclavo

Esta vez, no configuramos la información maestro-esclavo a través del comando slaveof en los archivos de configuración de slave1 y slave2, por lo que el rol actual de las tres máquinas es maestro.

Inicie sesión en los tres redis respectivamente y luego use el comando de replicación de información para ver la información maestro-esclavo de los siguientes tres, de la siguiente manera:

 A continuación, usaremos los comandos de la consola para especificar slave1 y slave2 como bibliotecas maestras esclavas.

4.1.10 Configurar el esclavo 1 como la biblioteca esclava del maestro

Ejecute el siguiente comando para conectarse a Slave1

redis-cli -h 192.168.200.129 -p 6380 -a 123456

Ejecute el siguiente comando para establecer la contraseña maestra

Dado que el maestro requiere una contraseña, la contraseña del maestro debe especificarse en el esclavo 1; de lo contrario, los datos no se pueden sincronizar.

config set masterauth 123456

Ejecute el siguiente comando para especificar slave1 como el esclavo del maestro

slaveof 192.168.200.129 6379

De la siguiente manera, use la replicación de información para ver la información maestro-esclavo de esclavo1

4.1.11 Configurar el esclavo 1 como la biblioteca esclava del maestro

Ejecute el siguiente comando para conectarse a Slave2

redis-cli -h 192.168.200.129 -p 6381 -a 123456

Ejecute el siguiente comando para establecer la contraseña maestra

Dado que el maestro requiere una contraseña, la contraseña del maestro debe especificarse en el esclavo 2, de lo contrario, los datos no se pueden sincronizar.

config set masterauth 123456

Ejecute el siguiente comando para especificar slave2 como el esclavo del maestro

slaveof 192.168.200.129 6379

De la siguiente manera, use la replicación de información para ver la información maestro-esclavo de esclavo2

 4.1.12, Echemos un vistazo a la información maestro-esclavo del maestro

[root@service ~]# redis-cli -h 192.168.200.129 -p 6379 -a 123456
192.168.200.129:6379> info replication

 Nota: Si se utiliza el comando slaveof para especificar el método maestro-esclavo, la configuración maestro-esclavo dejará de ser válida después de que se reinicie el esclavo. Por lo tanto, debe restablecer el comando slaveof en el esclavo después de reiniciar. No olvide este.
Si la dirección de cambio se cambia a través de slaveof en el medio, los datos locales se borrarán y los datos se volverán a sincronizar desde el nuevo maestro.

4.2 Paso de la antorcha

Si hay muchos esclavos conectados al maestro, el maestro estará bajo presión. De hecho, los esclavos también pueden estar conectados a los esclavos, como se muestra en la siguiente figura. La configuración no se muestra aquí y es similar a la arriba.

 4.3, anti-orientado al cliente

Cuando el maestro cuelga, podemos elegir uno de los esclavos como maestro.

Por ejemplo, si queremos que Slave1 sea el host, podemos ejecutar el siguiente comando en Slave1.

slaveof no one

En este punto, el esclavo1 se convierte en el host y luego va a otros esclavos para ejecutar el comando slaveof para colgarlo en el esclavo1.

Este tipo de conmutación activo/en espera tiene una desventaja: necesita ejecutar comandos manualmente para operar, lo cual no es muy conveniente.

Presentemos otro método: el modo centinela, después de que el maestro cuelga, uno de los esclavos se elige automáticamente como maestro y la conmutación por error se realiza automáticamente.

5. Modo centinela

5.1 ¿Qué es el modo centinela?

La versión automática anti-cliente puede monitorear automáticamente si el maestro falla.Si hay una falla, uno de los esclavos será seleccionado como maestro de acuerdo con el número de votos, y los otros esclavos cambiarán automáticamente al nuevo maestro. para la sincronización para realizar el escape automático de la falla.

5.2 Principio

Sentinel enviará una solicitud de ping al maestro de acuerdo con la frecuencia especificada para ver si el maestro todavía está vivo. Si el maestro no responde a la solicitud de ping enviada por Sentinel dentro del tiempo especificado, Sentinel pensará que el maestro está muerto, pero hay un error de juicio en esta situación Posiblemente, por ejemplo: tal vez el maestro no está caído, pero la red entre el centinela y el maestro no está conectada, lo que conduce a una falla de ping.

Para evitar juicios erróneos, generalmente se inician varios centinelas, generalmente un número impar, como 3, luego puede especificar que cuando hay varios centinelas que piensan que el maestro está caído, entonces se determina que el maestro está realmente caído, generalmente este valor establecido en la mitad del centinela, por ejemplo, el número de centinelas es 3, entonces esta cantidad se puede establecer en 2.

Cuando se juzgan varios centinelas y se determina que el maestro está realmente muerto, Sentinel realizará una conmutación por error: un servidor será expulsado del esclavo, se actualizará al nuevo servidor maestro y otros servidores esclavos que fallan el servidor maestro esclavo de apunta al nuevo servidor maestro; cuando el cliente intenta conectarse al servidor maestro fallido, el clúster también devolverá la dirección del nuevo servidor maestro al cliente, de modo que el clúster pueda usar el nuevo servidor maestro para reemplazar el servidor fallido .

5.3 ¿Cómo jugar?

5.3.1 Requisitos: configurar 1 maestro, 2 esclavos y 3 centinelas

A continuación, realicemos la configuración de 1 maestro, 2 esclavos y 3 centinelas. Cuando el esclavo cuelga, se requieren al menos 2 centinelas para pensar que el maestro está colgado antes de la conmutación por error.

Para mayor comodidad, simulamos en una máquina, mi ip de máquina es: 192.168.200.129, 6 nodos diferentes (1 maestro, 2 esclavos, 3 centinelas) se distinguen por puertos, y la información de configuración del nodo es la siguiente

5.3.2 Crear un directorio de trabajo de casos: centinela

Ejecute el siguiente comando para crear el directorio /opt/sentinel.Todas las operaciones esta vez se realizan en el directorio sentinel.

# 方便演示,停止所有的redis
ps -ef | grep redis | awk -F" " '{print $2;}' | xargs kill -9
mkdir /opt/sentinel
cd /opt/sentinel/

5.3.3 Copiar redis.conf al directorio centinela

redis.conf es el archivo de configuración predeterminado de redis

cp /opt/redis-6.2.1/redis.conf /opt/sentinel/

5.3.4 Crear un archivo de configuración maestro: redis-6379.conf

Cree un archivo redis-6379.conf en el directorio /opt/sentinel, el contenido es el siguiente, tenga en cuenta que 192.168.200.129 es la IP de la máquina de prueba, debe reemplazarla por la suya

include /opt/sentinel/redis.conf
daemonize yes
bind 192.168.200.129
dir /opt/sentinel/

port 6379
dbfilename dump_6379.rdb
pidfile /var/run/redis_6379.pid
logfile "./6379.log"

5.3.5 Crear el archivo de configuración de slave1: redis-6380.conf

Cree un archivo redis-6380.conf en el directorio /opt/sentinel, el contenido es el siguiente, similar al maestro anterior, simplemente reemplace 6379 con 6380

include /opt/sentinel/redis.conf
daemonize yes
bind 192.168.200.129
dir /opt/sentinel/

port 6380
dbfilename dump_6380.rdb
pidfile /var/run/redis_6380.pid
logfile "./6380.log"

5.3.6 Crear el archivo de configuración de slave2: redis-6381.conf

Cree un archivo redis-6381.conf en el directorio /opt/sentinel con el siguiente contenido

include /opt/sentinel/redis.conf
daemonize yes
bind 192.168.200.129
dir /opt/sentinel/

port 6381
dbfilename dump_6381.rdb
pidfile /var/run/redis_6381.pid
logfile "./6381.log"

5.3.7, iniciar maestro, esclavo1, esclavo2

redis-server /opt/sentinel/redis-6379.conf
redis-server /opt/sentinel/redis-6380.conf
redis-server /opt/sentinel/redis-6381.conf

5.3.8 Configurar Slave1 como la biblioteca esclava del maestro

Ejecute el siguiente comando para conectarse a Slave1

redis-cli -h 192.168.200.129 -p 6380

Ejecute el siguiente comando para especificar slave1 como el esclavo del maestro

slaveof 192.168.200.129 6379

De la siguiente manera, use la replicación de información para ver la información maestro-esclavo de esclavo1

5.3.9 Configurar Slave2 como biblioteca esclava del maestro

Ejecute el siguiente comando para conectarse a Slave2

redis-cli -h 192.168.200.129 -p 6381

Ejecute el siguiente comando para especificar slave2 como el esclavo del maestro

slaveof 192.168.200.129 6379

De la siguiente manera, use la replicación de información para ver la información maestro-esclavo de esclavo2

5.3.10 Verificar si la replicación maestro-esclavo es normal

Ejecute el siguiente comando para conectarse al maestro

redis-cli -h 192.168.200.129 -p 6379

Ejecute el siguiente comando para ver la información maestro-esclavo

info replication

 Ejecute el siguiente comando en el maestro para escribir datos

flushdb
set name jack

De la siguiente manera, verifique el valor de name en slave1

192.168.200.129:6380> get name
"jack"

De la siguiente manera, verifique el valor de name en slave2

192.168.200.129:6381> get name
"jack"

Los datos son consistentes, lo que indica que la sincronización es normal.

5.3.11 Crear archivo de configuración de sentinel1: sentinel-26379.conf

Cree un archivo sentinel-26379.conf en el directorio /opt/sentinel con el siguiente contenido

# 配置文件目录
dir /opt/sentinel/
# 日志文件位置
logfile "./sentinel-26379.log"
# pid文件
pidfile /var/run/sentinel_26379.pid
# 是否后台运行
daemonize yes
# 端口
port 26379
# 监控主服务器master的名字:mymaster,IP:192.168.200.129,port:6379,最后的数字2表示当Sentinel集群中有2个Sentinel认为master存在故障不可用,则进行自动故障转移
sentinel monitor mymaster 192.168.200.129 6379 2
# master响应超时时间(毫秒),Sentinel会向master发送ping来确认master,如果在20秒内,ping不通master,则主观认为master不可用
sentinel down-after-milliseconds mymaster 60000
# 故障转移超时时间(毫秒),如果3分钟内没有完成故障转移操作,则视为转移失败
sentinel failover-timeout mymaster 180000
# 故障转移之后,进行新的主从复制,配置项指定了最多有多少个slave对新的master进行同步,那可以理解为1是串行复制,大于1是并行复制
sentinel parallel-syncs mymaster 1
# 指定mymaster主的密码(没有就不指定)
# sentinel auth-pass mymaster 123456

5.3.12 Crear archivo de configuración de sentinel2: sentinel-26380.conf

Cree un archivo sentinel-26380.conf en el directorio /opt/sentinel con el siguiente contenido

# 配置文件目录
dir /opt/sentinel/
# 日志文件位置
logfile "./sentinel-26380.log"
# pid文件
pidfile /var/run/sentinel_26380.pid
# 是否后台运行
daemonize yes
# 端口
port 26380
# 监控主服务器master的名字:mymaster,IP:192.168.200.129,port:6379,最后的数字2表示当Sentinel集群中有2个Sentinel认为master存在故障不可用,则进行自动故障转移
sentinel monitor mymaster 192.168.200.129 6379 2
# master响应超时时间(毫秒),Sentinel会向master发送ping来确认master,如果在20秒内,ping不通master,则主观认为master不可用
sentinel down-after-milliseconds mymaster 60000
# 故障转移超时时间(毫秒),如果3分钟内没有完成故障转移操作,则视为转移失败
sentinel failover-timeout mymaster 180000
# 故障转移之后,进行新的主从复制,配置项指定了最多有多少个slave对新的master进行同步,那可以理解为1是串行复制,大于1是并行复制
sentinel parallel-syncs mymaster 1
# 指定mymaster主的密码(没有就不指定)
# sentinel auth-pass mymaster 123456

5.3.13 Crear el archivo de configuración de sentinel3: sentinel-26381.conf

Cree un archivo sentinel-26381.conf en el directorio /opt/sentinel con el siguiente contenido

# 配置文件目录
dir /opt/sentinel/
# 日志文件位置
logfile "./sentinel-26381.log"
# pid文件
pidfile /var/run/sentinel_26381.pid
# 是否后台运行
daemonize yes
# 端口
port 26381
# 监控主服务器master的名字:mymaster,IP:192.168.200.129,port:6379,最后的数字2表示当Sentinel集群中有2个Sentinel认为master存在故障不可用,则进行自动故障转移
sentinel monitor mymaster 192.168.200.129 6379 2
# master响应超时时间(毫秒),Sentinel会向master发送ping来确认master,如果在20秒内,ping不通master,则主观认为master不可用
sentinel down-after-milliseconds mymaster 60000
# 故障转移超时时间(毫秒),如果3分钟内没有完成故障转移操作,则视为转移失败
sentinel failover-timeout mymaster 180000
# 故障转移之后,进行新的主从复制,配置项指定了最多有多少个slave对新的master进行同步,那可以理解为1是串行复制,大于1是并行复制
sentinel parallel-syncs mymaster 1
# 指定mymaster主的密码(没有就不指定)
# sentinel auth-pass mymaster 123456

5.3.14 Iniciar 3 centinelas

Hay 2 formas de iniciar centinela

方式1:redis-server sentinel.conf --sentinel
方式2:redis-sentinel sentinel.conf

A continuación, usamos el método 2 para iniciar 3 centinelas

/opt/redis-6.2.1/src/redis-sentinel /opt/sentinel/sentinel-26379.conf
/opt/redis-6.2.1/src/redis-sentinel /opt/sentinel/sentinel-26380.conf
/opt/redis-6.2.1/src/redis-sentinel /opt/sentinel/sentinel-26381.conf

5.3.15 Consultar la información de 3 centinelas respectivamente

Ejecute los siguientes comandos en los tres centinelas respectivamente para ver la información de cada centinela

redis-cli -p sentinel的端口
info sentinel

La información de sentinel1 es la siguiente, y la información de los otros dos centinelas no se incluirá aquí. Compruébelo usted mismo.

5.3.16 Verificar si el failover automático es exitoso

Paso 1: Ejecute el siguiente comando en el maestro para detener el maestro

192.168.200.129:6379> shutdown

paso 2: espere 2 minutos y espere a que se complete la conmutación por error

En Sentinel, configuramos el valor de down-after-milliseconds en 60 segundos, lo que significa que el tiempo para determinar que el host está fuera de línea es de 60 segundos, por lo que esperamos 2 minutos para permitir que el sistema complete automáticamente la conmutación por error primero.

Paso 3: vea la información maestro-esclavo de esclavo1, de la siguiente manera

Use el comando de replicación de información para ver información maestro-esclavo

Paso 4: vea la información maestro-esclavo del esclavo 2, de la siguiente manera

Slave2 se convierte en el maestro y Slave2 se convierte en la biblioteca esclava de Slave1 y se completa la conmutación por error.

Paso 5: A continuación, verifique si Slave1 y Slave2 están sincronizados

Ejecute el siguiente comando en Slave2

192.168.200.129:6381> set address china
OK

Ejecute el siguiente comando en Slave1 para consultar el valor de la dirección, el efecto es el siguiente, lo que indica que Slave2 y Slave1 son sincrónicamente normales.

192.168.200.129:6380> get address
"china"

5.3.17 Restaurar al viejo maestro para que se incline automáticamente

Cuando se restaura el maestro anterior, se colgará automáticamente debajo del nuevo maestro. Verifiquemos si este es el caso.

paso 1: Ejecute el siguiente comando para iniciar el antiguo maestro

redis-server /opt/sentinel/redis-6379.conf

paso 2: Ejecute el siguiente comando para conectarse al antiguo maestro

redis-cli -h 192.168.200.129 -p 6379

Paso 3: Ejecute el siguiente comando para ver su información maestro-esclavo

info replication

El efecto es el siguiente, de hecho consistente con las expectativas.

 5.4 Más introducción de Sentinel

Para obtener más información sobre centinela, consulte: Redis-Sentinel

5.5 SpringBoot integra el modo Sentinel

5.5.1 Introducir la configuración maven de redis

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

5.5.2 Configurar información de redis centinela en application.properties

# redis sentinel主服务名称,这个可不是随便写的哦,来源于:sentinel配置文件中sentinelmonitor后面跟的那个名称
spring.redis.sentinel.master=mymaster
# sentinel节点列表(host:port),多个之间用逗号隔开
spring.redis.sentinel.nodes=192.168.200.129:26379,192.168.200.129:26380,192.168.200.129:26381
# sentinel密码
#spring.redis.sentinel.password=
# 连接超时时间(毫秒)
spring.redis.timeout=60000
# Redis默认情况下有16个分片,这里配置具体使用的分片,默认是0
spring.redis.database=0

5.5.3 Use la clase de herramienta RedisTemplate para operar redis

RedisTemplate se usa en springboot para operar redis, y este objeto debe inyectarse en nuestro bean. El código es el siguiente:

@Autowired
private RedisTemplate<String, String> redisTemplate;

// 用下面5个对象来操作对应的类型
this.redisTemplate.opsForValue(); //提供了操作string类型的所有方法
this.redisTemplate.opsForList(); // 提供了操作list类型的所有方法
this.redisTemplate.opsForSet(); //提供了操作set的所有方法
this.redisTemplate.opsForHash(); //提供了操作hash表的所有方法
this.redisTemplate.opsForZSet(); //提供了操作zset的所有方法

5.5.4, código de muestra de RedisTemplate

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
 
/**
 * @className RedisController
 * @date 2022/6/21
 **/
@RestController
@RequestMapping("/redis")
public class RedisController {
    @Autowired
    private RedisTemplate<String, String> redisTemplate;
 
    @RequestMapping("/stringTest")
    public String stringTest() {
        this.redisTemplate.delete("name");
        this.redisTemplate.opsForValue().set("name", "路人");
        String name = this.redisTemplate.opsForValue().get("name");
        return name;
    }
 
    @RequestMapping("/listTest")
    public List<String> listTest() {
        this.redisTemplate.delete("names");
        this.redisTemplate.opsForList().rightPushAll("names", "刘德华", "张学友", "郭富城", "黎明");
        List<String> courses = this.redisTemplate.opsForList().range("names", 0, -1);
        return courses;
    }
 
    @RequestMapping("setTest")
    public Set<String> setTest() {
        this.redisTemplate.delete("courses");
        this.redisTemplate.opsForSet().add("courses", "java", "spring", "springboot");
        Set<String> courses = this.redisTemplate.opsForSet().members("courses");
        return courses;
    }
 
    @RequestMapping("hashTest")
    public Map<Object, Object> hashTest() {
        this.redisTemplate.delete("userMap");
        Map<String, String> map = new HashMap<>();
        map.put("name", "路人");
        map.put("age", "30");
        this.redisTemplate.opsForHash().putAll("userMap", map);
        Map<Object, Object> userMap = this.redisTemplate.opsForHash().entries("userMap");
        return userMap;
    }
 
    @RequestMapping("zsetTest")
    public Set<String> zsetTest() {
        this.redisTemplate.delete("languages");
        this.redisTemplate.opsForZSet().add("languages", "java", 100d);
        this.redisTemplate.opsForZSet().add("languages", "c", 95d);
        this.redisTemplate.opsForZSet().add("languages", "php", 70);
        Set<String> languages = this.redisTemplate.opsForZSet().range("languages", 0, -1);
        return languages;
    }
 
}

Supongo que te gusta

Origin blog.csdn.net/qq_34272760/article/details/125394735
Recomendado
Clasificación