Compartir tecnología

Configuración y optimización de Redis.

2024-07-12

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

1. Bases de datos relacionales y bases de datos no relacionales

(1) Base de datos relacional

Una base de datos relacional es una base de datos estructurada, creada en una base de datos de modelo relacional y orientada a registros.

Bases de datos relacionales comunes: Oracle, MySQL, SQL Server, Microsoft Access, DB2.

(2) Base de datos no relacional

NOSQL=Not Only SQL es el término general para bases de datos no relacionales. Dependiendo del método de almacenamiento, la estructura de almacenamiento y los escenarios de uso, se denomina base de datos no relacional. Las bases de datos distintas de las bases de datos relacionales convencionales pueden denominarse bases de datos no relacionales.

Bases de datos no relacionales comunes: Redis, MongoDB, Hbase, CouhDB.

2. Conceptos básicos de Redis

(1) Introducción a Redis

Redis es una base de datos Nosql de código abierto escrita en lenguaje C. Se ejecuta en función de la memoria y admite la persistencia. Adopta un formato de almacenamiento clave-valor (par clave-valor). Su número de puerto es 6379.

(2) Ventajas de Redis

  1. Tiene alta velocidad de lectura y escritura de datos.
  2. Admite tipos de datos enriquecidos. clave-valor, cadenas, listas, hashes, conjuntos, conjuntos ordenados.
  3. Admite la persistencia de datos. Los datos se guardan en el disco y se pueden cargar y utilizar después de reiniciar.
  4. Atómico.
  5. Admite copia de seguridad de datos.

Tres, instalación de Redis

1. Instalar Redis

[root@localhost ~]# systemctl detiene firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y install gcc* zlib-devel

[raíz@localhost ~]#tar xvzf redis-4.0.9.tar.gz

[raíz@localhost ~]#cd redis-4.0.9/

[root@localhost redis-4.0.9]# hacer

Aviso:

Se generará un mensaje de error después de realizar la operación.

solución:
Solución 1: use make MALLOC=libc para especificar el asignador de memoria para compilar para libc
Solución 2: limpiar y limpiar

[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis install
[root@localhost utilidades]# ln -s /usr/local/redis/bin/* /usr/local/bin/

[root@localhost redis-4.0.9]# cd utilidades/
Entre ellos: install_server.sh es el script de inicialización

[root@localhost utilidades]# ./install_server.sh
Seleccione la ruta del ejecutable redis [] /usr/local/redis/bin/redis-server(proporcione la ruta ejecutable)

Ver control de procesos y servicios
[root@localhost utilidades]# netstat -anpt | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* ESCUCHAR 5360/redis-server 1
[root@localhost utilidades]# /etc/init.d/redis_6379 detener(redis está cerrado)
[root@localhost utilidades]# /etc/init.d/redis_6379 inicio(en)
[root@localhost utilidades]# /etc/init.d/redis_6379 estado (estado)

Modificación de parámetros de configuración.
[root@localhost ~]#vim /etc/redis/6379.conf
enlazar 127.0.0.1 192.168.10.101//Dirección del host de escucha
puerto 6379 //puerto
demonizar sí //Habilitar proceso demonio
archivo pid /var/run/redis_6379.pid //Especificar archivo PID
Aviso de nivel de registro//nivel de registro
archivo de registro /var/log/redis_6379.log//Especificar archivo de registro

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

2.herramienta de comando redis

[root@localhost utilidades]# redis-cli(Inicio de sesión local)
[root@localhost utilidades]# redis-cli -h 192.168.10.101 -p 6379(inicio de sesión remoto)
192.168.10.101:6379> silbido(El servicio de detección funciona con normalidad)
APESTAR

3: herramienta de prueba de referencia de redis

redis-benchmark es la herramienta oficial de prueba de rendimiento de Redis que puede probar eficazmente el rendimiento de los servicios de Redis.

  • -h: especifica el nombre del host del servidor;
  • -p: especifica el puerto del servidor;
  • -s: especifica el socket del servidor;
  • -c: especifica el número de conexiones simultáneas;
  • -n: especifica el número de solicitudes;
  • -d: especifica el tamaño de datos del valor SET/GET en bytes;
  • -k:1=mantener vivo 0=reconectar;
  • -r: SET/GET/INCR usa claves aleatorias, SADD usa valores aleatorios;
  • -P: transferencia por tubería<numreq> preguntar;
  • -q: Fuerza el cierre de redis. Solo se muestran los valores de consulta/seg;
  • --csv: salida en formato CSV;
  • -l: genera un bucle y ejecuta la prueba de forma permanente;
  • -t: ejecuta solo una lista de comandos de prueba separados por comas;
  • -I: Modo inactivo. Abra solo N conexiones inactivas y espere.
  • (1) Rendimiento de la solicitud de prueba

    [root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000

    Observación:

    -h: especifica el nombre del host del servidor;

  • -p: especifica el puerto del servidor;

    -c: especifica el número de conexiones simultáneas;

    -n: especifica el número de solicitudes;

(2) Probar el rendimiento del acceso

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100

Observación:

-h: especifica el nombre del host del servidor;

-p: especifica el puerto del servidor;

-d: especifica el tamaño de datos del valor SET/GET en bytes;

-q: Fuerza el cierre de redis. Solo se muestran los valores de consulta/seg;

  1. 4. Comandos comunes para la base de datos Redis

establecer almacena el formato del comando de datos establecer el valor de la clave

obtener Obtener formato de comando de datos obtener clave

(1) Comandos clave relacionados

1. Agregue pares clave-valor

127.0.0.1:6379&gt; conjunto 1 1
DE ACUERDO
127.0.0.1:6379&gt; conjunto 2 2
DE ACUERDO
127.0.0.1:6379&gt; conjunto 3 3
DE ACUERDO

2. Ver todos los valores en la base de datos.

127.0.0.1:6379&gt; teclas *
1) "3"
2) "1"
3) "2"

3. Ver datos que comienzan con v en la base de datos.
127.0.0.1:6379>LLAVES v*

4. Ver cualquier dato que comience con v en la base de datos.

127.0.0.1:6379>LLAVES v?

5.Ver la base de datos actual con en comienzoLo siguiente contiene dos dígitos cualesquiera de datos.

127.0.0.1:6379>LLAVES v??

(2) existe

Determinar si el valor existe.

127.0.0.1:6379>existe f5Determinar si existe f5

(entero) 1 El resultado es 1, lo que indica que la tecla f5 existe.

como

(entero) 0 El resultado es 0, lo que indica que la tecla f5 no existe

(3)del

del El comando puede eliminar el especificado. llave

127.0.0.1:6379> del v5 Eliminar v5 en la base de datos

(entero) 1

127.0.0.1:6379>obtener v5

(nulo)

(4) tipo

usar tipo El comando se puede obtener. llave correspondiente valor tipo de valor

127.0.0.1:6379>tipo k1

cadena

Observación:

Tipos de datos soportados por redis

  • Cadena: la cadena es el tipo más simple, que se establece y obtiene de forma ordinaria y se utiliza para el almacenamiento en caché de valores clave.
  • Hash: algoritmo hash, una estructura similar al mapa. Generalmente, los datos estructurados, como un objeto, se pueden almacenar en caché en redis.
  • Lista: la lista es una lista ordenada. Puede utilizar la lista para almacenar algunas estructuras de datos de tipo lista, como listas de fans, listas de comentarios de artículos, etc.
  • Set: Set es una colección desordenada que elimina automáticamente los duplicados.
  • Conjunto ordenado: el conjunto ordenado es un conjunto ordenado, que está deduplicado pero se puede ordenar al escribir, se otorga una puntuación y se clasifica automáticamente según la puntuación.

(5) cambiar el nombre

rebautizar El comando es para un existente. llave rebautizar

En uso real, se recomienda utilizar existe Comando para ver el objetivo llave existe y luego decide si ejecutar rebautizar comando para evitar sobrescribir datos importantes.

127.0.0.1:6379>cambiar nombre v22 v2 Cambiar el nombre de v22 a v2

DE ACUERDO

(6) cambiar de nombre

renacimiento La función del comando es modificar el existente. llave Realice un cambio de nombre y verifique si existe el nuevo nombre.

usarrenacimiento Cuando se cambia el nombre del comando, si el objetivo llave Si existe, no se le cambiará el nombre.

(7) tamaño de base de datos

tamaño de la base de datos El propósito del comando es ver la base de datos actual. llave Número de.

127.0.0.1:6379> tamaño de la base de datos

(entero) 5

5. Comandos comunes para múltiples bases de datos.

(1) Cambiar entre múltiples bases de datos

Redis Incluido por defecto sin ningún cambio. 16 base de datos, el nombre de la base de datos es un número 0-15 ser nombrado en orden

(1)Cambiar al número de serie 10 base de datos

127.0.0.1:6379>Seleccione 10

DE ACUERDO

(2)Cambiar al número de serie 15 base de datos

127.0.0.1:6379[10]>Seleccione 15

DE ACUERDO

(3)Cambiar al número de serie 0 base de datos

127.0.0.1:6379[15]>seleccionar 0

(2) Mover datos entre múltiples bases de datos

127.0.0.1:6379>Conjunto k1 100 Crear k1 en la base de datos 0

DE ACUERDO

127.0.0.1:6379>obtener k1

"100"

127.0.0.1:6379>mover k1 1  //Mueve k1 de la base de datos 0 a la base de datos 1

(entero) 1

127.0.0.1:6379>Seleccione 1   //Cambiar a la base de datos de destino 1

DE ACUERDO

127.0.0.1:6379[1]>obtener k1   //Ver datos movidos

"100"

127.0.0.1:6379[1]> seleccionar 0

DE ACUERDO

127.0.0.1:6379> obtener k1         //El valor de k1 no se puede ver en la base de datos 0

(nulo)

(3) Borrar datos en la base de datos.

Para borrar los datos de la base de datos actual, utilice Descarga HDB

Implementación del comando; borre todos los datos de la base de datos, use DESCARGAR Implementación de comandos.

6. 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 ReidasVolcado programado de registros de bases de datos en memoria (vertedero)al disco Banco de Desarrollo Regional persistencia), el otro es Año NuevoSólo añadir archivoPersistencia (el principio es Reidas El registro de operaciones se escribe en el archivo adjunto).

La diferencia entre RDB y AOF

ROB escribe la instantánea de datos en el disco dentro del intervalo de tiempo especificado. Es un subproceso de fork. Primero escribe los datos en una carpeta temporal, luego reemplazará el archivo anterior y lo almacenará con compresión binaria.

AOF registra cada operación de escritura y eliminación del servidor en forma de registro. Las operaciones de consulta no se registrarán, pero se registrarán en forma de texto.

 

Ventajas y desventajas de RDB y AOF

Ventajas del 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.

La recuperación de datos es rápida.

Maximizar el rendimiento

Alta eficiencia de arranque

Banco de Desarrollo Regionaldefecto:

Los datos que no se guardaron antes del apagado se perderán.

       RDB se completa a través del proceso hijo de bifurcación, consumiendo recursos.

Ventajas del AOF:

La durabilidad de los datos es alta

En el modo de agregar, el contenido del archivo de registro no se destruirá incluso si hay un tiempo de inactividad.

El mecanismo de reescritura se puede iniciar para proteger la seguridad de los datos.

Desventajas del AOF:

La velocidad de recuperación de datos de AOF es lenta

La eficiencia operativa del AOF es baja

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 redies necesita cargar un archivo de persistencia después de reiniciar,prioridadSe seleccionarán los archivos AOF.

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

7. 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, vuelque la instantánea de la memoria.
  • guardar 300 10: Después de 300 segundos (5 minutos), si al menos 10 claves han cambiado, vuelque la instantánea de la memoria.
  • guardar 60 10000: después de 60 segundos (1 minuto), si al menos 10000 claves han cambiado, volque 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:

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

siempre: persistencia sincrónica, cada vez que los datos cambian, se escribirán en el disco inmediatamente ## línea 702

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

8. Problemas de rendimiento

(1) Ver información de la memoria

192.168.9.236:7001> memoria de información

memoria usada:1210776 Tamaño de la memoria utilizada, en bytes
memoria_usada_humana:1.15MMostrado con unidades, en M
memoria usada rss:7802880¿Cuánta memoria ocupa Redis desde la perspectiva del sistema operativo?
memoria usada rss humana:7,44MMostrar con unidades
memoria máxima:1073741824Tamaño máximo de memoria
memoria_máxima_humana:1.00G Mostrar con unidades

(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átilEliminar según el tiempo de vencimiento de la clave 

 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)

Establecer el tiempo de vencimiento de la clave

127.0.0.1:6379>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