Compartir tecnología

03-Configuración y optimización de NoSQL Redis

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Comparación general entre redis y memcache

1.Rendimiento

Redis: solo utiliza un único núcleo. En promedio, Redis tiene un rendimiento mayor que Memcached cuando almacena datos pequeños en cada núcleo.

Memcached: puede utilizar varios núcleos y, en datos de más de 100 000, el rendimiento de Memcached es superior al de Redis.

2. Eficiencia en el uso de la memoria

MemCached: al utilizar un almacenamiento clave-valor simple, Memcached tiene una mayor utilización de la memoria.

Redis: si se utiliza una estructura hash para el almacenamiento de valores clave, su utilización de memoria será mayor que la de Memcached debido a su compresión combinada.

3. Espacio de memoria y tamaño de datos

MemCached: La memoria máxima se puede modificar mediante el algoritmo LRU. El tamaño de una única clave-valor en Memcached es limitado y un valor solo admite un máximo de 1 MB.

Redis: agrega funciones de VM y supera las limitaciones de la memoria física. Redis admite un tamaño máximo de valor-clave único de 512 MB.

4.Soporte de estructura de datos

MemCached: estructura de datos única, utilizada solo para almacenar datos en caché.

Redis: admite tipos de datos más ricos. Redis no solo admite datos de tipo k/v simples, sino que también proporciona almacenamiento de estructuras de datos como list, set, zset y hash.

Se pueden realizar operaciones enriquecidas con datos directamente en el lado del servidor, lo que puede reducir los tiempos de E/S de la red y el volumen de datos.

5.Fiabilidad

Memcached: es solo una memoria caché con bajos requisitos de confiabilidad. MemCached no admite la persistencia de datos. Los datos desaparecen después de un corte de energía o un reinicio, pero la estabilidad está garantizada.

Redis: tiene requisitos de alta confiabilidad, admite la persistencia y recuperación de datos, permite puntos únicos de falla y también afecta parte del rendimiento. Admite copia de seguridad de datos, es decir, copia de seguridad de datos en modo maestro-esclavo. Redis admite la persistencia de datos. Puede guardar datos en la memoria en el disco y cargarlos nuevamente para usarlos al reiniciar.

6. Escenarios de aplicación

Memcached: reduce la carga de la base de datos y mejora el rendimiento en el caché del sistema dinámico, adecuado para escenarios de más lectura, menos escritura y grandes volúmenes de datos;

Redis: adecuado para sistemas que requieren alta eficiencia de lectura y escritura, negocios de procesamiento de datos complejos y altos requisitos de seguridad.

2. Casos experimentales

1.instalación de redis

Primero apague el firewall

  1. 先把防火墙关掉
  2. systemctl stop firewalld
  3. set setenforce 0
  4. [root@localhost ~]# yum -y install gcc* zlib-devel
  5. 解压 redis包
  6. [root@localhost ~]# tar xvzf redis-4.0.9.tar.gz
  7. [root@localhost ~]# cd redis-4.0.9/
  8.  make

  1. 2:查看进程
  2. [root@localhost utils]# netstat -anpt | grep redis

  1. 3:redis服务控制
  2. [root@localhost ~]#/etc/init.d/redis_6379 stop
  3. [root@localhost ~]#/etc/init.d/redis_6379 start
  4. [root@localhost ~]#/etc/init.d/redis_6379 restart
  5. [root@localhost ~]#/etc/init.d/redis_6379 status

  1. 4.配置参数的修改
  2. [root@localhost ~]#vim /etc/redis/6379.conf
  3. bind 127.0.0.1 192.168.10.101 //监听的主机地址
  4. port 6379 //端口
  5. daemonize yes //启用守护进程
  6. pidfile /var/run/redis_6379.pid //指定 PID 文件
  7. loglevel notice //日志级别
  8. logfile /var/log/redis_6379.log //指定日志文件
  9. [root@localhost~]#/etc/init.d/redis_6379 restart
  10. [root@localhost utils]# netstat -anpt | grep redis

  1. 二:Redis 命令工具
  2.  redis-server:用于启动 Redis 的工具;
  3.  redis-benchmark:用于检测 Redis 在本机的运行效率;
  4.  redis-check-aof:修复 AOF 持久化文件;
  5.  redis-check-rdb:修复 RDB 持久化文件;
  6.  redis-cli:Redis 命令行工具。

Comandos comunes de Redis:

establecer crear
obtener vista
claves * ver todo
cambiar el nombre (se sobrescribirá)
renamex (verifique si existe el mismo nombre y luego decida si ejecutar el comando de cambio de nombre)
del (el comando puede eliminar la clave especificada de la base de datos actual)
existe (el comando puede determinar si el valor clave existe)
tipo (use el comando tipo para obtener el tipo de valor correspondiente a la clave)
seleccionar (cambiar base de datos)
mover (mover datos)
flushdb (borrar datos de la base de datos actual)
flusall (borrar todos los datos de la base de datos)

  1.  -p:指定服务器端口;
  2.  -s:指定服务器 socket;
  3.  -c:指定并发连接数;
  4.  -n:指定请求数;
  5.  -d:以字节的形式指定 SET/GET 值的数据大小;
  6.  -k:1=keep alive 0=reconnect;
  7.  -r:SET/GET/INCR 使用随机 key, SADD 使用随机值;
  8.  -P:通过管道传输<numreq>请求;
  9.  -q:强制退出 redis。仅显示 query/sec 值;
  10.  --csv:以 CSV 格式输出;
  11.  -l:生成循环,永久执行测试;
  12.  -t:仅运行以逗号分隔的测试命令列表;
  13.  -I:Idle 模式。仅打开 N 个 idle 连接并等待。

Cinco: persistencia de Redis

Redis Todos los datos se almacenan en la memoria y luego se guardan de forma asincrónica en el disco de vez en cuando.(Se llamaModo semipersistente”); También puedes escribir cada cambio de datos en un añadir solo archivo (aof)en(Se llamaModo de persistencia total”)

porque Redis Todos los datos se almacenan en la memoria. Si la persistencia no está configurada,Redis Después de reiniciar, se pierden todos los datos.Por lo tanto, es necesario habilitarRedis La función de persistencia guarda datos en el disco. Redis Después de reiniciar, los datos se pueden recuperar del disco.Redis Se proporcionan dos métodos para la persistencia, uno es Banco de Desarrollo RegionalBase de datos Redis Persistencia (el principio es ReidasTiempo de registro de la base de datos en memoria vertedero al disco Banco de Desarrollo Regional persistencia), el otro es Año Nuevoañadir solo archivoPersistencia (el principio es Reidas El registro de operaciones se escribe en el archivo adjunto).

1: La diferencia entre RDB y AOF

(1) ¿Qué es RDB?

El método predeterminado

La persistencia de RDB es el proceso de generar una instantánea de los datos del proceso actual y guardarla en el disco duro. El proceso de activación de la persistencia de RDB se divide en activación manual y activación automática.

Mecanismo de activación: la activación manual corresponde a los comandos guardar y bgsave respectivamente.

comando guardar: bloquea el servidor Redis actual hasta que se completa el proceso RDB. En casos con una gran cantidad de memoria, provocará un bloqueo de tiempo. No recomendado para su uso en entornos en línea.

Comando bgsave: el proceso de Redis ejecuta la operación fork (función utilizada para crear un proceso) para crear un proceso hijo. El proceso de persistencia RDB es responsable del proceso hijo y finaliza automáticamente una vez completado. El bloqueo sólo ocurre durante la fase de bifurcación.

(2) Ventajas y desventajas de RDB:

Ventajas de RDB:

RDB es un archivo binario compacto y comprimido que representa una instantánea de los datos de Redis en un momento determinado. Es muy adecuado para copias de seguridad, copias completas y otros escenarios. Por ejemplo, realice una copia de seguridad de bgsave cada 6 horas y copie el archivo RDB a la máquina remota o al sistema de archivos para la recuperación ante desastres.

Redis carga RDB y recupera datos mucho más rápido que el método AOF.

Desventajas de RDB:

Los datos en modo RDB no pueden lograr persistencia en tiempo real/persistencia de segundo nivel. Porque cada vez que se ejecuta bgsave, se realiza una operación de bifurcación para crear un proceso hijo, lo cual es una operación pesada y el costo de ejecución frecuente es demasiado alto.

Los archivos RDB se guardan en un formato binario específico. Durante la evolución de las versiones de Redis, existen múltiples formatos de versiones de RDB. Existe el problema de que la versión anterior del servicio Redis no es compatible con la nueva versión del formato RDB.

2. ¿Qué es la AOF?

Persistencia de AOF (añadir solo archivo): registre cada comando de escritura en un registro independiente y luego vuelva a ejecutar el comando en el archivo AOF para restaurar los datos al reiniciar. La función principal de AOF es resolver el problema de la persistencia de datos en tiempo real. Ahora es la corriente principal de la persistencia de Redis.

Criterios para elegir entre los dos:

Sacrificar algo de rendimiento a cambio de una mayor coherencia de la caché (Año Nuevo),

Cuando las operaciones de escritura sean frecuentes, no habilite la copia de seguridad a cambio de un mayor rendimiento y espere la operación manual. ahorrar cuando, haga una copia de seguridad nuevamente (Banco de Desarrollo Regional

Observación:

Si es necesario cargar un archivo persistente después de reiniciar el reinicio, se seleccionarán los archivos AOF.

Si RDB se habilita primero y luego AOF, y RDB persiste primero, AOF sobrescribirá el contenido del archivo RDB.

3: configuración de persistencia de Redis

(1) configuración de persistencia RDB

[root@localhost ~]# vim /etc/redis/6379.conf

Abierto 6379.conf Después del archivo, busque ahorrar, puede ver la información de configuración como se muestra a continuación.

  •  guardar 900 1: Después de 900 segundos (15 minutos), si al menos 1 clave cambia, volca la instantánea de la memoria.
  •  guardar 300 10: Después de 300 segundos (5 minutos), si al menos 10 claves han cambiado, descargue la instantánea de la memoria.
  •  guardar 60 10000: después de 60 segundos (1 minuto), si al menos 10000 claves han cambiado, descargue la instantánea de la memoria.
  • dbfilename dump.rdb: nombre de archivo RDB ##254 línea
  • dir /var/lib/redis/6379: ruta del archivo RDB ##264 línea
  • rdbcompression sí: si se debe comprimir la línea ## 242

(2) Configuración de persistencia de AOF

existir Redis Hay tres métodos de sincronización en el archivo de configuración, son:

  • appendonly sí: habilitar la persistencia de AOF (el valor predeterminado es no) ##673 línea
  • appendfilename "appendonly.aof": nombre de archivo AOF ##677 línea
  • # appendfsync siempre
  • appendfsync cada segundo
  • # sin sincronización de apéndice

siempre: persistencia síncrona, cada vez que los datos cambian, se escribirán en el disco inmediatamente

eachsec: recomendado de forma predeterminada, graba de forma asincrónica cada segundo (valor predeterminado)

no: sin sincronización, dejando que el sistema operativo decida cómo sincronizar

  • aof-load-truncado sí ##769行

Ignore la última instrucción potencialmente problemática

[root@localhost ~]#/etc/init.d/redis_6379 reiniciar

(2) Reescritura de AOF

para poder resolver Año Nuevo Si el tamaño del archivo continúa aumentando, los usuarios pueden informar a Redis enviar BGREWRITEAOFOrden.BGREWRITEAOF El comando se eliminará mediante Año Nuevo comandos redundantes en el archivo para anular (volver a escribirAño Nuevoarchivo, hacer Año Nuevo Mantenga el tamaño del archivo lo más pequeño posible.

127.0.0.1:6379&gt; bgrewriteaof

Se inició la reescritura del archivo adjunto en segundo plano

# Cuando el registro es BGREWRITEAOF,sisin anexar sincronización al reescribirEstablecido en sí, lo que significa que las nuevas operaciones de escritura no se sincronizarán con fsync, sino que solo se almacenarán temporalmente en el búfer. Para evitar conflictos con la operación de E/S del disco, espere hasta que se complete la reescritura antes de escribir. El valor predeterminado en Redis es no

no-appendfsync-on-rewrite no

# Cuando el tamaño del archivo AOF actual es el doble del tamaño del archivo AOF durante la última reescritura del registro, se produce la operación BGREWRITEAOF.

porcentaje de reescritura automática de aof 100

Observación:

100Se refieredeLa tasa de crecimiento del archivo se refiere a la tasa de crecimiento del archivo AOF actual en comparación con la última reescritura.100es dos veces

#El valor mínimo del archivo AOF actual para ejecutar el comando BGREWRITEAOF para evitar BGREWRITEAOF frecuentes debido al tamaño pequeño del archivo cuando se inicia Reids por primera vez.

reescritura automática de aof tamaño mínimo 64 mb

Seis: gestión del desempeño

1: Ver información de la memoria

192.168.9.236:7001> memoria de información

used_memory:1210776 #El tamaño de la memoria utilizada,en bytes
used_memory_human:1.15M # Pantalla con unidad,En m
used_memory_rss:7802880 # ¿Cuánta memoria ocupa Redis desde la perspectiva del sistema operativo?
used_memory_rss_human:7.44M # Pantalla con unidad
maxmemory:1073741824 # Tamaño máximo de memoria
maxmemory_human:1.00G # Pantalla con unidad

2: estrategia de reciclaje

política de memoria máxima: Estrategia de reciclaje

Ø volátil-lru: Permite Redis Elija el utilizado menos recientemente de todo el conjunto de datos llave Borrar

Ø TTL volátilde acuerdo allavetiempo de vencimiento para la eliminación

Ø volátil-aleatorio: seleccione aleatoriamente datos para eliminarlos de la recopilación de datos con un tiempo de vencimiento establecido;

Ø todas las teclas-lru:usar Unidad de Investigación Local (LRU) Los algoritmos eliminan datos de todos los conjuntos de datos;

Ø todas las teclas son aleatorias: Seleccionar datos aleatoriamente para eliminarlos de la recopilación de datos;

Ø No desalojo: Desactiva la eliminación de datos (valor predeterminado)

Observación:

Establecer el tiempo de vencimiento de la clave

caducado v1 10

v1 tiene un tiempo de caducidad de 10 segundos

Observación:

cuando Redis Necesidad de reclamar uno debido a la presión de la memoria. llave hora,Redis La primera consideración es no reciclar los datos más antiguos, sino los datos utilizados menos recientemente. llave o a punto de caducar llave Elija uno al azar de llave, eliminado del conjunto de datos

redis establecer contraseña

1. Método de configuración

Método 1: establezca la contraseña a través del archivo de configuración redis.conf

Busque la palabra clave requirepass, seguida de la contraseña. Está comentada de forma predeterminada, es decir, no se requiere contraseña de forma predeterminada, de la siguiente manera:

  

 Abra el comentario, configúrelo como su propia contraseña y reinicie

Método 2: establecer una contraseña nombrando

Utilice redis-cli para conectarse a redis y ejecutar el siguiente comando

config set requirepass 123456

Una vez completada la ejecución, no es necesario reiniciar. Deberá ingresar su contraseña cuando salga del cliente e inicie sesión nuevamente.

2. Método de conexión

1. Ingrese la contraseña al conectarse

[root@localhost bin]# ./redis-cli -a 123456

2. Conéctese primero y luego ingrese la contraseña.

[root@localhost bin]# ./redis-cli127.0.0.1:6379> auth 123456

3. Método de cierre

[root@localhost bin]# ./redis-cli -a 123456 shutdown

4. Diferencia

1) La contraseña establecida modificando el archivo de configuración tendrá efecto permanentemente; la contraseña establecida mediante el comando tendrá efecto temporalmente y dejará de ser válida después de reiniciar.

2) La modificación de la contraseña establecida en el archivo de configuración requiere un reinicio para que surta efecto; use la contraseña establecida por el comando para que entre en vigencia después de cerrar sesión e iniciar sesión nuevamente, y dejará de ser válida después de reiniciar.

3) La prioridad del comando es mayor que la prioridad del archivo de configuración