Prácticas recomendadas para la configuración del servicio Redis

  • Configurar la caché de Redis L2
  • Activar conexión esclava de Redis
  • Claves de precarga
  • Habilitar caché obsoleta
  • Separe la caché de Redis de la sesión de Redis
  • Comprima la caché de Redis y utilice gzip para una mayor compresión

Configurar la caché de Redis L2

Configure la caché de Redis L2 configurando el REDIS_BACKEND variable de implementación en .magento.env.yaml archivo de configuración.

stage:
  deploy:
    REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'

Para ver la configuración del entorno en la infraestructura de Cloud, consulte la REDIS_BACKEND en el Guía de Commerce en la infraestructura de Cloud.

Para instalaciones locales, consulte Configurar el almacenamiento en caché de páginas Redis en el Guía de configuración.

NOTE
Compruebe que está utilizando la versión más reciente de ece-tools paquete. Si no es así, actualizar a la versión más reciente. Puede comprobar la versión instalada en el entorno local mediante el complemento composer show magento/ece-tools Comando CLI.

Tamaño de la memoria caché L2 (Adobe Commerce Cloud)

La caché L2 utiliza un sistema de archivos temporal como mecanismo de almacenamiento. En comparación con los sistemas de base de datos de clave-valor especializados, un sistema de archivos temporal no tiene una política de expulsión de claves para controlar el uso de la memoria.

La falta de control de uso de memoria puede hacer que el uso de memoria caché L2 crezca con el tiempo al acumular la caché antigua.

Para evitar el agotamiento de la memoria de las implementaciones de caché L2, Adobe Commerce borra el almacenamiento cuando se alcanza un determinado umbral. El valor de umbral predeterminado es 95 %.

Es importante ajustar el uso máximo de memoria caché L2 en función de los requisitos del proyecto para el almacenamiento en caché. Utilice uno de los siguientes métodos para configurar el tamaño de la caché de memoria:

  • Cree un ticket de asistencia para solicitar cambios de tamaño del /dev/shm monte.
  • Ajuste de cleanup_percentage propiedad en el nivel de aplicación para limitar el porcentaje máximo de llenado del almacenamiento. La memoria libre restante puede ser utilizada por otros servicios.
    Puede ajustar la configuración en la configuración de implementación en el grupo de configuración de caché cache/frontend/default/backend_options/cleanup_percentage.
NOTE
El cleanup_percentage La opción configurable de se introdujo en Adobe Commerce 2.4.4.

El siguiente código muestra un ejemplo de configuración en .magento.env.yaml archivo:

stage:
  deploy:
    REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
    CACHE_CONFIGURATION:
      _merge: true
      frontend:
        default:
          backend_options:
            cleanup_percentage: 90

Los requisitos de caché pueden variar en función de la configuración del proyecto y el código de terceros personalizado. El ámbito del tamaño de la memoria caché L2 permite que la caché L2 funcione sin demasiadas visitas de umbral.
Lo ideal es que el uso de memoria caché L2 se estabilice en un determinado nivel por debajo del umbral, solo para evitar la limpieza frecuente del almacenamiento.

Puede comprobar el uso de la memoria de almacenamiento en caché L2 en cada nodo del clúster mediante el siguiente comando de CLI y buscando el /dev/shm línea.
El uso puede variar en distintos nodos, pero debe converger al mismo valor.

df -h

Activar conexión esclava de Redis

Habilite una conexión esclava de Redis en .magento.env.yaml archivo de configuración para permitir que solo un nodo gestione el tráfico de lectura-escritura, mientras que los demás nodos gestionan el tráfico de solo lectura.

stage:
  deploy:
    REDIS_USE_SLAVE_CONNECTION: true

Consulte REDIS_USE_SLAVE_CONNECTION en el Guía de Commerce en la infraestructura de Cloud.

Para las instalaciones locales de Adobe Commerce, configure la nueva implementación de caché de Redis con el bin/magento:setup comandos. Consulte Usar Redis para la caché predeterminada en el Guía de configuración.

WARNING
Hacer no configurar una conexión esclava de Redis para proyectos de infraestructura en la nube con una arquitectura escalada/dividida. Esto provoca errores de conexión de Redis. Consulte Guía de configuración de Redis en el Commerce en infraestructura en la nube guía.

Claves de precarga

Para reutilizar datos entre páginas, enumere las claves de la precarga en la .magento.env.yaml archivo de configuración.

stage:
  deploy:
    REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
    CACHE_CONFIGURATION:
      _merge: true
      frontend:
        default:
          id_prefix: '061_'                       # Prefix for keys to be preloaded
          backend_options:
            preload_keys:                         # List the keys to be preloaded
              - '061_EAV_ENTITY_TYPES:hash'
              - '061_GLOBAL_PLUGIN_LIST:hash'
              - '061_DB_IS_UP_TO_DATE:hash'
              - '061_SYSTEM_DEFAULT:hash'

Para instalaciones locales, consulte Función de precarga Redis en el Guía de configuración.

Habilitar caché obsoleta

Reduzca los tiempos de espera de bloqueo y mejore el rendimiento, especialmente cuando se trata de numerosos bloques y claves de caché, mediante el uso de una caché obsoleta y la generación de una nueva caché en paralelo. Habilite la caché anticuada y defina los tipos de caché en la .magento.env.yaml archivo de configuración:

stage:
  deploy:
    REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
    CACHE_CONFIGURATION:
      _merge: true
      default:
        backend_options:
          use_stale_cache: false
      stale_cache_enabled:
        backend_options:
          use_stale_cache: true
      type:
        default:
          frontend: "default"
        layout:
          frontend: "stale_cache_enabled"
        block_html:
          frontend: "stale_cache_enabled"
        reflection:
          frontend: "stale_cache_enabled"
        config_integration:
          frontend: "stale_cache_enabled"
        config_integration_api:
          frontend: "stale_cache_enabled"
        full_page:
          frontend: "stale_cache_enabled"
        translate:
          frontend: "stale_cache_enabled"

Para configurar instalaciones locales, consulte Opciones de caché antiguas en el Guía de configuración.

Instancias de sesión y caché de Redis independientes

Separar la caché de Redis de la sesión de Redis le permite administrar la caché y las sesiones de forma independiente. Evita que los problemas de caché afecten a las sesiones, lo que podría afectar a los ingresos. Cada instancia de Redis se ejecuta en su propio núcleo, lo que mejora el rendimiento.

  1. Actualice el .magento/services.yaml archivo de configuración.

    code language-yaml
    mysql:
        type: mysql:10.4
        disk: 35000
    
    redis:
       type: redis:6.0
    
    redis-session:              # This is for the new Redis instance
       type: redis:6.0
    
    search:
       type: elasticsearch:7.9
       disk: 5000
    
    rabbitmq:
       type: rabbitmq:3.8
       disk: 2048
    
  2. Actualice el .magento.app.yaml archivo de configuración.

    code language-yaml
    relationships:
        database: "mysql:mysql"
        redis: "redis:redis"
        redis-session: "redis-session:redis"   # Relationship of the new Redis instance
        search: "search:elasticsearch"
        rabbitmq: "rabbitmq:rabbitmq"
    
  3. Enviar un ticket de asistencia de Adobe Commerce para solicitar el aprovisionamiento de una nueva instancia de Redis dedicada a sesiones en entornos de Producción y Ensayo. Incluir el actualizado .magento/services.yaml y .magento.app.yaml archivos de configuración. Esto no provocará ningún tiempo de inactividad, pero requiere una implementación para activar el nuevo servicio.

  4. Compruebe que la nueva instancia se esté ejecutando y anote el número de puerto.

    code language-bash
    echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
    
  5. Agregue el número de puerto al .magento.env.yaml archivo de configuración.

    note note
    NOTE
    disable_locking se debe establecer en 1.
    code language-yaml
    SESSION_CONFIGURATION:
      _merge: true
      redis:
        port: 6374       # check the port in $MAGENTO_CLOUD_RELATIONSHIPS
        timeout: 5
        disable_locking: 1
        bot_first_lifetime: 60
        bot_lifetime: 7200
        max_lifetime: 2592000
        min_lifetime: 60
    
  6. Eliminación de sesiones de base de datos predeterminada (db 0) en la instancia de caché de Redis.

    code language-bash
    redis-cli -h 127.0.0.1 -p 6374 -n 0 FLUSHDB
    

Durante la implementación, debería ver las siguientes líneas en la registro de generación e implementación:

W:   - Downloading colinmollenhour/credis (1.11.1)
W:   - Downloading colinmollenhour/php-redis-session-abstract (v1.4.5)
...
W:   - Installing colinmollenhour/credis (1.11.1): Extracting archive
W:   - Installing colinmollenhour/php-redis-session-abstract (v1.4.5): Extracting archive
...
[2022-08-17 01:13:40] INFO: Version of service 'redis' is 6.0
[2022-08-17 01:13:40] INFO: Version of service 'redis-session' is 6.0
[2022-08-17 01:13:40] INFO: redis-session will be used for session if it was not override by SESSION_CONFIGURATION

Compresión de caché

Si utiliza más de 6 GB de Redis maxmemoryAdemás, puede utilizar la compresión de caché para reducir el espacio consumido por las claves. Tenga en cuenta que existe un equilibrio entre el rendimiento del lado del cliente y el de Si tiene CPU de reserva, actívela. Consulte Usar Redis para el almacenamiento de sesión en el Guía de configuración.

stage:
  deploy:
    REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
    CACHE_CONFIGURATION:
      _merge: true;
      frontend:
        default:
          backend_options:
            compress_data: 4              # 0-9
            compress_tags: 4              # 0-9
            compress_threshold: 20480     # don't compress files smaller than this value
            compression_lib: 'gzip'       # snappy and lzf for performance, gzip for high compression (~69%)

Información adicional

recommendation-more-help
754cbbf3-3a3c-4af3-b6ce-9d34390f3a60