Introducción al archivo de configuración de Redis

Tabla de contenido

1. Al principio

2 、 INCLUYE

3 、 MÓDULOS

4 、 RED

5 、 GENERAL

6 、 INSTANTÁNEA

7 、 REPLICACIÓN

8 、 SEGURIDAD

9 、 CLIENTES

10 、 GESTIÓN DE LA MEMORIA

11 、 MODO SÓLO AÑADIR

12 、 ESCRITURA LUA

13 、 CLÚSTER REDIS


En el blog anterior, presentamos cómo instalar Redis. Hay un archivo de configuración muy importante  redis.conf  (bajo el directorio /opt/redis-4.0.9) en el directorio de descompresión de Redis. La configuración de muchas funciones de Redis está aquí. Esto se hace en el archivo, como dije en la última conferencia, generalmente para no dañar los archivos instalados, lo mejor es no cambiar la configuración predeterminada de fábrica, por lo que copiamos este archivo de configuración al directorio / etc / redis /.

  Abra este archivo con el comando vim /etc/redis/redis.conf. A continuación, presentaremos este archivo de configuración en detalle.

  ps: No importa si no comprende el significado de estas configuraciones, las presentaremos en ejemplos específicos más adelante, solo familiarícese con ellas primero.

volver a la cima

1. Al principio

  

  No hay nada que decir aquí. Cabe señalar que cuando necesite usar el tamaño de la memoria más adelante, puede especificar la unidad, generalmente en forma de k, gb, m, y la unidad no distingue entre mayúsculas y minúsculas .

volver a la cima

2 、 INCLUYE

  

  Sabemos que Redis solo tiene un archivo de configuración. Si varias personas están desarrollando y manteniendo, entonces se necesitan varios archivos de configuración. En este momento, se pueden configurar varios archivos de configuración aquí a través de include /path/to/local.conf. El archivo de configuración redis.conf sirve como puerta principal.

  ps: Si ha utilizado el desarrollo struts2, en el caso del desarrollo de varias personas en el equipo del proyecto, normalmente habrá varios archivos struts2.xml, que también se introducirán a través de la configuración de la clase.

  Además, cuando necesite prestar atención, si escribe esta configuración al comienzo del archivo redis.conf, la configuración posterior sobrescribirá la configuración del archivo importado. Si desea centrarse en la configuración del archivo importado, debe escribir la configuración de inclusión en redis.conf El final del archivo.

volver a la cima

3 、 MÓDULOS

   

  La función explosiva de redis3.0 es la adición de clústeres, y redis4.0 agrega muchas funciones nuevas sobre la base de 3.0, de las cuales la configuración del módulo personalizado aquí es una de ellas. A través de la configuración de loadmodule aquí, se introducirá un módulo personalizado para agregar algunas funciones.

volver a la cima

4 、 RED

   

  ps: La configuración aquí es más larga, solo intercepté una parte, lo mismo a continuación.

  ①, bind: vincula la IP de la tarjeta de red del servidor redis, el valor predeterminado es 127.0.0.1, que es la dirección de bucle de retorno local. En este caso, el acceso al servicio redis solo puede ser a través de la conexión del cliente local, pero no a través de la conexión remota. Si la opción de vinculación está vacía, aceptará todas las conexiones de las interfaces de red disponibles.

  ②, puerto: especifique el puerto en el que se ejecuta redis, el valor predeterminado es 6379. Dado que Redis es un modelo de un solo subproceso, el puerto se modificará cuando se abran varios procesos de Redis en una sola máquina.

  ③, tiempo de espera: establezca el tiempo de espera cuando el cliente está conectado, en segundos. Cuando el cliente no emite ninguna instrucción dentro de este período de tiempo, la conexión se cierra. El valor predeterminado es 0, lo que significa que no está cerrado.

  ④, tcp-keepalive: La unidad son segundos, lo que significa que SO_KEEPALIVE se utilizará periódicamente para detectar si el cliente todavía está en buen estado para evitar que el servidor sea bloqueado. El valor oficial recomendado es 300s. Si se establece en 0, no se realizará periódicamente Detección.

volver a la cima

5 、 GENERAL

   

  Detalles de configuración detallados:

  ①, daemonize: establecido en yes para especificar que Redis se inicia como un demonio (inicio en segundo plano). El valor predeterminado es no

  ②, pidfile: configura la ruta del archivo PID, cuando redis se ejecuta como un demonio, escribirá el pid en el archivo /var/redis/run/redis_6379.pid de forma predeterminada

  ③, loglevel: define el nivel de registro. El valor predeterminado es aviso, que tiene los siguientes 4 valores:

          depurar (registrar una gran cantidad de información de registro, adecuada para las fases de desarrollo y prueba)

          detallado (más información de registro)

          aviso (información de registro adecuada, utilizada en el entorno de producción)

          advertencia (solo se registrará cierta información importante y clave)

  ④, archivo de registro: configura la dirección del archivo de registro, que se imprime en la ventana del terminal de la línea de comandos de forma predeterminada

  ⑤ Bases de datos: establezca el número de bases de datos. La base de datos predeterminada es DB 0. Puede utilizar el comando select <dbid> para seleccionar una base de datos diferente en cada conexión. Dbid es un valor entre 0 y bases de datos-1. El valor predeterminado es 16, lo que significa que Redis tiene 16 bases de datos de forma predeterminada.

volver a la cima

6 、 INSTANTÁNEA

  La configuración aquí se usa principalmente para operaciones de persistencia.

  

  ①, save: Sirve para configurar las condiciones de persistencia que desencadenan Redis, es decir, cuándo guardar los datos en la memoria en el disco duro. La configuración predeterminada es la siguiente:

save 900 1:表示900 秒内如果至少有 1 个 key 的值变化,则保存
save 300 10:表示300 秒内如果至少有 10 个 key 的值变化,则保存
save 60 10000:表示60 秒内如果至少有 10000 个 key 的值变化,则保存

    Por supuesto, si solo usa la función de almacenamiento en caché de Redis y no necesita persistencia, puede comentar todas las líneas de guardado para deshabilitar la función de guardado. Puede deshabilitarlo directamente con una cadena vacía: guardar ""

  ②, stop-writes-on-bgsave-error: el valor predeterminado es yes. Cuando RDB está habilitado y la última vez que el fondo guarda datos falla, si Redis deja de recibir datos. Esto hará que los usuarios se den cuenta de que los datos no se conservan correctamente en el disco; de lo contrario, nadie notará que ha ocurrido un desastre. Si Redis se reinicia, puede comenzar a recibir datos nuevamente

  ③, rdbcompression; el valor predeterminado es yes. Para las instantáneas almacenadas en el disco, puede establecer si desea comprimir el almacenamiento. Si es así, redis utilizará el algoritmo LZF para la compresión. Si no desea consumir CPU para la compresión, puede configurar para desactivar esta función, pero las instantáneas almacenadas en el disco serán más grandes.

  ④, rdbchecksum: el valor predeterminado es yes. Después de almacenar la instantánea, también podemos permitir que redis use el algoritmo CRC64 para la verificación de datos, pero esto aumentará el consumo de rendimiento en aproximadamente un 10%. Si desea obtener la máxima mejora de rendimiento, puede desactivar esta función.

  ⑤, dbfilename: establece el nombre del archivo de la instantánea, el valor predeterminado es dump.rdb

  ⑥. Dir: Establezca la ruta de almacenamiento del archivo de instantánea. Este elemento de configuración debe ser un directorio, no un nombre de archivo. Utilice el nombre de archivo db anterior como nombre de archivo guardado.

volver a la cima

7 、 REPLICACIÓN

  

  ①, slave-serve-stale-data: el valor predeterminado es yes. Cuando un esclavo pierde contacto con el maestro o la replicación está en curso, el esclavo puede tener dos comportamientos:

      1) En caso afirmativo, el esclavo seguirá respondiendo a la solicitud del cliente, pero los datos devueltos pueden estar desactualizados o los datos pueden estar vacíos durante la primera sincronización 

      2) Si es no, cuando ejecute otros comandos excepto la información que salveof, el esclavo devolverá un error "SYNC con maestro en progreso"

  ② Esclavo de solo lectura: configure si la instancia esclava de Redis acepta operaciones de escritura, es decir, si el esclavo es Redis de solo lectura. El valor predeterminado es sí.

  ③, repl-diskless-sync: si la replicación de datos maestro-esclavo utiliza la función de replicación sin disco. El valor predeterminado es no.

  ④, repl-diskless-sync-delay: cuando no se habilita la copia de seguridad del disco duro, el servidor espera un período de tiempo antes de transmitir el archivo RDB a la estación esclava a través del socket. Este tiempo de espera es configurable. Esto es importante porque una vez que comienza la transmisión, es imposible dar servicio a un esclavo recién llegado. El esclavo hará cola para la próxima transmisión RDB. Entonces el servidor espera un rato a que lleguen más esclavos. El tiempo de retraso es en segundos y el valor predeterminado es de 5 segundos. Para desactivar esta función, simplemente ajústela a 0 segundos y la transmisión comenzará inmediatamente. El valor predeterminado es 5.

  ⑤ repl-disable-tcp-nodelay: si se debe deshabilitar TCP_NODELAY en la estación esclava después de la sincronización. Si elige sí, redis usará una cantidad menor de paquetes TCP y ancho de banda para enviar datos a la estación esclava. Pero esto provocará un pequeño retraso de datos en la estación esclava. El kernel de Linux tiene un retraso de hasta 40 milisegundos en la configuración predeterminada. Si selecciona no, la demora de datos del esclavo no será tanto, pero el ancho de banda requerido para la copia de seguridad es relativamente grande. De forma predeterminada, optimizamos los factores potenciales, pero es una buena idea cambiarlo a sí en condiciones de alta carga o cuando tanto la estación maestra como la esclava están saltando. El valor predeterminado es no.

volver a la cima

8 、 SEGURIDAD

  

  ①, rename-command: comando renombrar, para algunos comandos peligrosos como:

    flushdb (borrar la base de datos)

    flushall (borrar todos los registros)

    config (el servidor se puede configurar después de que el cliente esté conectado)

    claves (una vez que el cliente está conectado, se pueden ver todas las claves existentes)                   

  Como servidor redis-server, a menudo es necesario desactivar los comandos anteriores para que el servidor sea más seguro. El método específico de desactivación es:

  • cambio de nombre-comando FLUSHALL ""

También puede mantener el comando, pero no es fácil de usar, simplemente cambie el nombre de este comando:

  • rename-command FLUSHALL abcdefg

  De esta manera, después de reiniciar el servidor, debe usar el nuevo comando para realizar la operación, de lo contrario, el servidor informará un error de comando desconocido.

  ②, requirepass: establece la contraseña de conexión de redis

  Por ejemplo: requirepass 123 significa que la contraseña de conexión de redis es 123.

volver a la cima

9 、 CLIENTES

  

  ①, maxclients: establece el número máximo de conexiones de cliente simultáneas. El valor predeterminado es ilimitado. La cantidad de conexiones de cliente que Redis puede abrir al mismo tiempo es el archivo más grande que puede abrir el proceso de Redis. El número de descriptores-32 (el propio servidor de redis usará algunos), si establece maxclients en 0. Indica que no hay restricción. Cuando el número de conexiones de clientes alcance el límite, Redis cerrará la nueva conexión y devolverá un mensaje de error de número máximo de clientes alcanzados al cliente

volver a la cima

10 、 GESTIÓN DE LA MEMORIA

  

  ①, maxmemory: establece la memoria máxima de Redis, si se establece en 0. Indica que no hay restricción. Por lo general, se usa junto con el parámetro maxmemory-policy que se describe a continuación.

  ②, maxmemory-policy: cuando el uso de la memoria alcanza el valor máximo establecido por maxmemory, la estrategia de borrado de memoria utilizada por redis. Hay varias opciones:

    1) Volatile-lru usa el algoritmo LRU para eliminar la clave con un tiempo de vencimiento (LRU: Least Recientemente Usado) 

    2) allkeys-lru usa el algoritmo LRU para eliminar cualquier clave 

    3) volatile-random elimina claves aleatorias con tiempo de vencimiento establecido 

    4) allkeys-random eliminar ke aleatorio

    5) volatile-ttl elimina la clave que está a punto de caducar (TTL menor) 

    6) noeviction noeviction no elimina ninguna clave, pero devuelve un error de escritura, la opción predeterminada

   ③, maxmemory-samples: LRU y los algoritmos TTL mínimos no son algoritmos precisos, sino algoritmos relativamente precisos (para ahorrar memoria). Puede elegir el tamaño de la muestra para la prueba a voluntad. Redis selecciona 3 muestras para la prueba de forma predeterminada. Puede establecer el número de muestras a través de maxmemory-samples.

volver a la cima

11 、 MODO SÓLO AÑADIR

  

  ① Appendonly: El redis predeterminado usa persistencia RDB, que es suficiente en muchas aplicaciones. Sin embargo, si Redis falla en el medio, puede causar la 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. El valor predeterminado es no.

  ②, appendfilename: Aof nombre de archivo, el valor predeterminado es "appendonly.aof"

  ③, appendfsync: la configuración de la estrategia de persistencia aof; no significa que fsync no se ejecute, y el sistema operativo garantiza que los datos se sincronizan con el disco, que es el más rápido; siempre significa que fsync se ejecuta para cada escritura para garantizar que los datos estén sincronizados con el disco; everysec significa cada Realizar fsync una vez por segundo puede causar la pérdida de estos datos de 1 s

  ④, no-appendfsync-on-rewrite: cuando AOF reescribe o escribe archivos RDB, se ejecutará una gran cantidad de IO. En este momento, para el modo AOF de Everysec y Always, la ejecución de fsync provocará el bloqueo durante demasiado tiempo, no El campo appendfsync-on-rewrite está configurado en no de forma predeterminada. Para aplicaciones con requisitos de 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 las características de persistencia. Establecer en sí significa que la nueva operación de escritura no se sincronizará durante la reescritura, y se almacenará temporalmente en la memoria y se escribirá después de que se complete la reescritura. El valor predeterminado es no, y se recomienda sí. La política fsync predeterminada de Linux es de 30 segundos. Se pueden perder 30 segundos de datos. El valor predeterminado es no.

  ⑤ auto-aof-rewrite-percent: el valor predeterminado es 100. 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 reescribirá, es decir, cuando el archivo AOF crezca a un tamaño determinado, 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.

  ⑥, tamaño mínimo de reescritura automática: 64 MB. Establezca el tamaño mínimo de archivo aof que permite reescribir para evitar reescribir cuando se alcanza el porcentaje acordado pero el tamaño sigue siendo pequeño.

  ⑦, aof-load-truncated: 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. Este fenómeno ocurre cuando el redis está inactivo o la terminación anormal no hará que la cola esté incompleta, puede optar por dejar que redis salga O importe la mayor cantidad de datos posible. Si 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. El valor predeterminado es sí.

volver a la cima

12 、 ESCRITURA LUA

  

  ①, lua-time-limit: el tiempo máximo para que se ejecute un script lua, en ms. El valor predeterminado es 5000.

volver a la cima

13 、 CLÚSTER REDIS

  

  ①, habilitado para clúster: conmutador de clúster, el valor predeterminado es no abrir el modo de clúster.

  ②, cluster-config-file: el nombre del archivo de configuración del clúster, cada nodo tiene un archivo de configuración relacionado con el clúster, que conserva la información del clúster. No es necesario configurar este archivo manualmente. Redis genera y actualiza este archivo. Cada nodo del clúster de Redis necesita un archivo de configuración independiente. Asegúrese de que no entre en conflicto con el nombre del archivo de configuración en el sistema donde se ejecuta la instancia. La configuración predeterminada es nodes-6379.conf.

  ③, cluster-node-timeout: el valor configurable es 15000. Umbral de tiempo de espera de interconexión de nodo, tiempo de espera de nodo de clúster milisegundos

  ④, cluster-slave-validity-factor: el valor se puede establecer en 10. Durante la conmutación por error, todos los esclavos solicitarán ser maestros, pero algunos esclavos pueden desconectarse del maestro durante un período de tiempo, lo que da como resultado datos demasiado obsoletos. Estos esclavos no deben ascender a maestros. Este parámetro se utiliza para determinar si el tiempo de desconexión entre el nodo esclavo y el maestro es demasiado largo. El método de juicio es: compare el tiempo de desconexión del esclavo con (tiempo de espera del esclavo * factor de validez del esclavo) + período de replicación-ping-esclavo. Si el tiempo de espera del nodo es de 30 segundos y el factor de validez del esclavo es 10, suponga El período predeterminado de respuesta-ping-esclavo es de 10 segundos, es decir, si supera los 310 segundos, el esclavo no intentará fallar

  ⑤, cluster-migration-barrera: el valor configurable es 1. Si el número de esclavos del maestro es mayor que este valor, los esclavos se pueden migrar a otros maestros aislados. Si este parámetro se establece en 2, solo cuando un nodo maestro tiene 2 nodos esclavos en funcionamiento, uno de sus nodos esclavos intentará migrar .

  ⑥ clúster-requiere-cobertura completa: de forma predeterminada, todas las ranuras del clúster son responsables de los nodos y el estado del clúster es correcto para proporcionar servicios. Establézcalo en no para proporcionar servicios cuando la ranura no esté totalmente asignada. No se recomienda abrir esta configuración, ya que esto provocará que el maestro de la partición pequeña siempre acepte solicitudes de escritura durante la partición, lo que provocará una inconsistencia de datos durante mucho tiempo.

Supongo que te gusta

Origin blog.csdn.net/sanmi8276/article/details/108709145
Recomendado
Clasificación