Configuración optimizada detallada de Redis

1. Estrategia de configuración de Redis

1.1 archivo de configuración de Redis

  • Parámetros de configuración (/etc/redis/6379.conf)
bind:监听的主机地址
port:端口(默认6379)
daemonize yes:启用守护进程
pidfile:指定PID文件
loglevel notice:日志级别
logfile:指定日志文件

1.2 Comandos de uso común de la base de datos Redis

  • herramienta de línea de comandos redis-cli
连接本地数据库
/usr/local/redis/bin/redis-cli
127.0.0.1:6379>
连接远程数据库
redis-cli -h 192.168.140.10 -p 6379
 192.168.140.10>

1.3 Herramienta de comando Redis

1.3.1 Introducción a la herramienta de comandos

  • redis-server: una herramienta para iniciar Redis
  • redis-benchmark: se utiliza para detectar la eficiencia operativa de Redis en esta máquina
  • redis-check-aof: Reparar archivos persistentes AOF
  • redis-check-rdb: Reparar archivos persistentes RDB
  • redis-cli: herramienta de línea de comandos de Redis
  • redis-sentinel: es una herramienta para iniciar el modo centinela

1.3.2 opciones de línea de comando de redis-benchmark (herramienta de prueba)

  • La sintaxis de prueba básica es
redis-benchmark [option] [option value]
-h: 指定服务器主机名
-p:指定服务器端口
-s:指定服务器socket
-c:指定并发连接数
-n:指定请求数
-d:以字节的形式指定SET/GET值的数据大小
-k:1=keep alive  0=reconnect
-r:SET/GET/INCR使用随机key,SADD使用随机值
-P:通过管道传输<numreq>请求
-q:强制退出redis,仅显示query/sec值
---csv:以CSV格式输出
-l:生成循环,永久执行测试
-t:仅运行以逗号分隔的测试命令列表
-I:Idle模式,仅打开N个idle 连接并等待
  • Ejemplo de aplicación
[root@server ~]# redis-benchmark -h 192.168.140.20 -p 6379 -c 100 -n 10000
//向IP地址为192.168.140.20,端口为6379的Redis服务器发送100个并发连接与10000个请求测试性能

2. Operación de múltiples bases de datos de Redis

2.1 Análisis de la base de datos

  • Redis admite múltiples bases de datos, 16 bases de datos son compatibles de forma predeterminada, llamadas 0-15;

  • Varias bases de datos son independientes entre sí y no interfieren entre sí;

  • Comandos de uso común para
    múltiples bases de datos : Cambiar entre
    múltiples bases de datos Mover datos entre múltiples bases de
    datos Borrar datos en la base de datos

2.2 Análisis de comandos

2.2.1 Cambiar entre varias bases de datos

  • Utilice el comando Seleccionar para cambiar entre varias bases de datos de Redis
  • Formato de comando
select index
//其中index 表示数据库的序号,而使用redis-cli 连接Redis数据库后,默认使用的是序号为0的数据库
  • Ejemplo de aplicación
127.0.0.1:6379> select 2      //此时表示从数据库0切换到数据库2
OK
127.0.0.1:6379[2]> select 10  //切换到数据库10
OK
127.0.0.1:6379[10]> 

2.2.2 Mover datos entre múltiples bases de datos

  • La base de datos de Redis proporciona un comando de movimiento, que puede mover datos de varias bases de datos
  • Formato de sintaxis básica del comando
move key dbindex
//其中“key“表示当前数据库的目标键,"dbindex"表示目标数据库的序号
  • Ejemplo de aplicación
127.0.0.1:6379> move q 10     //移动q到数据库10
(integer) 1
127.0.0.1:6379> get q   
(nil)
127.0.0.1:6379> select 10     //切换到数据库10
OK
127.0.0.1:6379[10]> keys *    列出key中的所有关键词
1) "q"

2.2.3 Borrar datos en la base de datos

  • La eliminación completa de datos de la base de datos de Redis se divide principalmente en dos partes:
    borrar los datos de la base de datos actual, usar el comando FLUSHDB para
    borrar todos los datos de la base de datos, usar el comando FLUSHALL para lograr (generalmente no)

  • Ejemplo de aplicación

127.0.0.1:6379> select 10    //切换到数据库10
OK
127.0.0.1:6379[10]> keys *   //列出key中的所有关键词
1) "q"
127.0.0.1:6379[10]> get q    //输出q键值
"10"
127.0.0.1:6379[10]> flushdb  //清除当前数据库中的数据
OK
127.0.0.1:6379[10]> keys *   //列出key中的所有关键词
(empty list or set)

2.3 Comandos de uso común de la base de datos Redis

2.3.1 comandos relacionados con las teclas

  • claves: obtenga una lista de valores clave que cumplen las reglas
  • existe: determina si el valor clave existe
  • del: elimina la clave especificada de la base de datos actual
  • tipo: Obtiene el tipo de valor correspondiente a la clave
  • renombrar (sobrescribir) / renamenx (no sobrescribir): renombrar la clave existente
  • dbsize: muestra el número de claves en la base de datos actual

2.3.2 Ejemplos de aplicación de comandos de uso común

  • Ejemplo de uso
[root@server1 ~]# redis-cli     //连接数据库
  • Ver que comienza con s
192.168.140.20:6379> keys s*                 
1) "set1"
2) "set2"
  • Compruebe si el conjunto de palabras clave existe (1 significa que existe, 0 significa que no existe)
192.168.140.20:6379> exists set3
(integer) 0
192.168.140.20:6379> exists set1
(integer) 1
  • Eliminar palabras clave, la operación se realiza correctamente salida 1
192.168.140.20:6379> del set1
(integer) 1
  • Obtiene el tipo de valor correspondiente a la clave
192.168.140.20:6379> set string1 77
OK
192.168.140.20:6379> type string1
string
192.168.140.20:6379> type hash1   //获取hash1对应的vlane值类型
hash
  • El comando de cambio de nombre cambia el nombre de una clave existente
rename命令进行重命名时,无论目标key是否存在都进行重命名,且源key的值会覆盖目标key 的值。
在实际使用过程中,建议先用exists命令查看目标 key是否存在,然后再决定是否执行rename命令,以避免覆盖重要数据
命令格式为 rename 源key 目标key

192.168.140.20:6379> set bw 1           //添加键值
OK
192.168.140.20:6379> set cw 2
OK
192.168.140.20:6379> rename cw bw   //重命名cw覆盖bw键值
OK
192.168.140.20:6379> get bw
"2"
  • El comando renamenx cambia el nombre de la clave existente y verifica si existe el nuevo nombre
其命令格式与 rename 的命令格式除命令关键字不同外基本相同,renamenx源key目标key。
使用renamenx命令进行重命名时,如果目标key存在则不进行重命名
命令格式:renamenx 源key 目标key

192.168.140.20:6379> set bw 1
OK
192.168.140.20:6379> set cw 2
OK
192.168.140.20:6379> renamenx cw bw		//重命名cw覆盖bw键值,重命名失败
(integer) 0

3. Análisis del archivo de configuración de Redis

3.1 Resumen de la persistencia

Visión general:

  • Redis se está ejecutando en la memoria y los datos en la memoria se pierden cuando se apaga
  • Para poder reutilizar los datos de Redis o prevenir fallas del sistema, debe
  • Los datos en Redis se escriben en el espacio del disco, es decir, persistencia

Clasificación de persistencia:

  • Método RDB: cree una instantánea para obtener una copia de todos los datos en Redis en un momento determinado
  • Método AOF: escriba el comando de escritura ejecutado al final del archivo y registre los cambios de datos en un registro

3.2 Resistencia RDB

3.2.1 Resumen

  • El método de persistencia predeterminado de Redis, el nombre de archivo predeterminado es dump.rdb.

3.2.2 Condiciones de activación

  • En el intervalo de tiempo especificado, ejecute el número especificado de operaciones de escritura (control del archivo de configuración)
  • Ejecute el comando save o bgsave (asincrónico)
  • Ejecute el comando flushall para borrar todos los datos de la base de datos
  • Ejecute el comando de apagado para asegurarse de que el servidor se apague normalmente sin perder ningún dato

3.2.3 Ventajas y desventajas

  • Adecuado para la recuperación de datos a gran escala
  • Si la empresa no requiere una alta integridad y consistencia de datos, RDB es una buena opción
  • La integridad y consistencia de los datos no son altas
  • Ocupar memoria durante la copia de seguridad

3.2.4 Recuperar datos a través de un archivo RDB

  • Copie el archivo dump.rdb en el directorio bin del directorio de instalación de redis y reinicie el servicio de redis
[root@localhost ~]# vim /etc/redis/6379.conf

#RDB核心规则配置 save <指定时间间隔> <执行指定次数更新操作>,满足条件就将内存中的数据同步到硬盘
中。官方出厂配置默认是 900秒内有1个更改,300秒内有10个更改以及60秒内有10000个更改,则将内存中的
数据快照写入磁盘。
若不想用RDB方案,可以把 save "" 的注释打开,下面三个注释
#save ""
save 900 1					"这三项默认设置"
save 300 10
save 60 10000
dbfilename dump.rdb				//RDB文件名称
dir /var/lib/redis/6379			//RDB文件路径
rdbcompression yes				//是否进行压缩
 
#当RDB持久化出现错误后,是否依然进行继续进行工作,yes:不能进行工作,no:可以继续进行工作,可以通过info中的rdb_last_bgsave_status了解RDB持久化是否有错误
stop-writes-on-bgsave-error yes
 
#配置存储至本地数据库时是否压缩数据,默认为yes。Redis采用LZF压缩方式,但占用了一点CPU的时间。若关闭该选项,但会导致数据库文件变的巨大。建议开启。
rdbcompression yes
 
#是否校验rdb文件;从rdb格式的第五个版本开始,在rdb文件的末尾会带上CRC64的校验和。这跟有利于文件的容错性,但是在保存rdb文件的时候,会有大概10%的性能损耗,所以如果你追求高性能,可以关闭该配置
rdbchecksum yes
 
#指定本地数据库文件名,一般采用默认的dump.rdb
dbfilename dump.rdb
 
#数据目录,数据库会写入这个目录。rdb、aof文件也会写在这个目录
dir /var/lib/redis/6379

3.3 persistencia AOF

  • Redis no está activado de forma predeterminada;

  • Corregir las deficiencias de RDB (inconsistencia de datos);

  • Utilice un registro para registrar cada operación de escritura y anexarlo al archivo;

  • El reinicio de Redis ejecutará el comando de escritura de adelante hacia atrás de acuerdo con el contenido del archivo de registro para completar el trabajo de recuperación de datos;

  • AOF no está activado de forma predeterminada, debe activarse manualmente. RDB está activado de forma predeterminada.

[root@localhost ~]# vim /etc/redis/6379.conf
 
'//Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。
appendonly no
 
appendfilename "appendonly.aof"		//指定本地数据库文件名,默认值为 appendonly.aof
  
#aof持久化策略的配置
#no表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快
	always表示每次写入都执行fsync,以保证数据同步到磁盘
	everysec表示每秒执行一次fsync,可能会导致丢失这1s数据
# appendfsync always		'//always:数据要求高'
appendfsync everysec 	'//everysec:一般情况使用 '
# appendfsync no			

no-appendfsync-on-rewrite no
 
auto-aof-rewrite-percentage 100
 
'//设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写'
auto-aof-rewrite-min-size 64mb
 
aof-load-truncated yes
 
'//加载redis时,可以识别AOF文件以“redis”开头'
'//字符串并加载带前缀的RDB文件,然后继续加载AOF尾巴'
aof-use-rdb-preamble yes

Comandos de configuración detallados

  • Cuando Redis se reinicia, ejecutará la instrucción de escritura de adelante hacia atrás de acuerdo con el contenido del archivo de registro para completar el trabajo de recuperación de datos. De forma predeterminada, redis usa el método de persistencia RDB, que es suficiente en muchas aplicaciones. Sin embargo, si Redis falla en el medio, causará pérdida de datos durante varios minutos De acuerdo con la estrategia de guardar para la persistencia, Append Only File es otro método de persistencia que puede proporcionar mejores características de persistencia. Redis escribirá los datos escritos cada vez en el archivo appendonly.aof después de recibirlo. Redis primero leerá los datos de este archivo en la memoria cada vez que se inicie, e ignorará primero el archivo RDB. Si rdb está activado, cambie no a sí
appendonly no
  • Cuando AOF reescribe o escribe archivos RDB, se realizará una gran cantidad de IO. En este momento, para el modo AOF de Everysec y Always, la ejecución de fsync provocará un bloqueo durante demasiado tiempo y el campo no-appendfsync-on-rewrite está configurado en el ajuste predeterminado Es no. Si la aplicación requiere una latencia alta, este campo se puede establecer en sí; de lo contrario, todavía se establece en no, que es una opción más segura para la función de persistencia. Establecer en yes significa que la nueva operación de escritura no se sincronizará durante la reescritura, se almacenará temporalmente en la memoria y se escribirá después de que se complete la reescritura. El valor predeterminado es no, se recomienda sí. La política fsync predeterminada de Linux es de 30 segundos. Puede perder 30 segundos de datos
no-appendfsync-on-rewrite no
  • Aof reescribe automáticamente la configuración. Cuando el tamaño del archivo AOF actual excede el tamaño del último archivo AOF reescrito, se realiza una reescritura, es decir, cuando el archivo AOF crece a un cierto tamaño, Redis puede llamar a bgrewriteaof para reescribir el archivo de registro. Cuando el tamaño del archivo AOF actual es el doble del tamaño del archivo AOF obtenido de la última reescritura del registro (establecido en 100), se inicia automáticamente un nuevo proceso de reescritura del registro.
auto-aof-rewrite-percentage 100
  • El archivo aof puede estar incompleto al final Cuando se inicia redis, los datos del archivo aof se cargan en la memoria. El reinicio puede ocurrir después de que el sistema operativo host en el que redis está inactivo, especialmente si la opción de datos = ordenados no se agrega al sistema de archivos ext4 (redis inactivo o una terminación anormal no causará colas incompletas). Si ocurre este fenómeno, puede elegir para permitir que Redis salga o para importar tantos datos como sea posible. Si se selecciona sí, cuando se importe el archivo aof truncado, se enviará automáticamente un registro al cliente y luego se cargará. Si es no, el usuario debe volver a marcar manualmente aof para reparar el archivo AOF.
aof-load-truncated yes

Supongo que te gusta

Origin blog.csdn.net/weixin_42449832/article/details/111462294
Recomendado
Clasificación