Práticas recomendadas para a configuração do serviço Redis
- Configuração do cache Redis L2
- Habilitar conexão Redis slave
- Chaves de pré-carregamento
- Habilitar cache obsoleto
- Separar o cache Redis da sessão Redis
- Compacte o cache Redis e use
gzip
para maior compactação
Configuração do cache Redis L2
Configure o cache Redis L2 configurando o REDIS_BACKEND
variável de implantação no .magento.env.yaml
arquivo de configuração.
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
Para configuração do ambiente na infraestrutura em nuvem, consulte REDIS_BACKEND
no Guia do Commerce na infraestrutura em nuvem.
Para instalações locais, consulte Configurar cache de página Redis no Guia de configuração.
ece-tools
pacote. Caso contrário, atualizar para a versão mais recente. Você pode verificar a versão instalada em seu ambiente local usando o composer show magento/ece-tools
comando CLI.Dimensionamento da memória cache L2 (Adobe Commerce Cloud)
O cache L2 usa um sistema de arquivos temporário como um mecanismo de armazenamento. Comparado com sistemas de banco de dados de valores-chave especializados, um sistema de arquivos temporário não tem uma política de remoção de chaves para controlar o uso de memória.
A falta de controle do uso da memória pode fazer com que o uso da memória cache L2 cresça com o tempo, acumulando o cache obsoleto.
Para evitar o esgotamento da memória das implementações de cache L2, o Adobe Commerce limpa o armazenamento quando um determinado limite é atingido. O valor de limite padrão é 95%.
É importante ajustar o uso máximo da memória cache L2 com base nos requisitos do projeto para armazenamento em cache. Use um dos seguintes métodos para configurar o dimensionamento do cache de memória:
- Crie um tíquete de suporte para solicitar alterações de tamanho do
/dev/shm
montagem. - Ajuste a variável
cleanup_percentage
no nível do aplicativo para limitar a porcentagem máxima de preenchimento do armazenamento. A memória livre restante pode ser usada por outros serviços.
Você pode ajustar a configuração na configuração de implantação no grupo de configuração de cachecache/frontend/default/backend_options/cleanup_percentage
.
cleanup_percentage
a opção configurável foi introduzida no Adobe Commerce 2.4.4.O código a seguir mostra um exemplo de configuração na variável .magento.env.yaml
arquivo:
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
backend_options:
cleanup_percentage: 90
Os requisitos de cache podem variar com base na configuração do projeto e no código personalizado de terceiros. O escopo de dimensionamento da memória cache L2 permite que o cache L2 funcione sem muitas ocorrências de limite.
Idealmente, o uso da memória cache L2 deve estabilizar em um determinado nível abaixo do limite, apenas para evitar a limpeza frequente do armazenamento.
Você pode verificar o uso da memória de armazenamento em cache L2 em cada nó do cluster usando o seguinte comando da CLI e procurando a /dev/shm
linha.
O uso pode variar em diferentes nós, mas deve convergir para o mesmo valor.
df -h
Habilitar conexão Redis slave
Ative uma conexão slave Redis no .magento.env.yaml
arquivo de configuração para permitir que apenas um nó manipule o tráfego de leitura-gravação, enquanto os outros nós manipulam o tráfego somente leitura.
stage:
deploy:
REDIS_USE_SLAVE_CONNECTION: true
Consulte REDIS_USE_SLAVE_CONNECTION no Guia do Commerce na infraestrutura em nuvem.
Para instalações locais do Adobe Commerce, configure a nova implementação do cache Redis usando o bin/magento:setup
comandos. Consulte Usar Redis para cache padrão no Guia de configuração.
Chaves de pré-carregamento
Para reutilizar dados entre páginas, liste as chaves para pré-carregamento na .magento.env.yaml
arquivo de configuração.
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 instalações locais, consulte Recurso de pré-carregamento Redis no Guia de configuração.
Habilitar cache obsoleto
Reduza os tempos de espera de bloqueio e melhore o desempenho — especialmente ao lidar com vários blocos e chaves de cache — usando um cache desatualizado e gerando um novo cache em paralelo. Habilite o cache obsoleto e defina os tipos de cache no .magento.env.yaml
arquivo de configuração:
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 instalações locais, consulte Opções de cache obsoletas no Guia de configuração.
Instâncias separadas do cache Redis e da sessão
A separação do cache Redis da sessão Redis permite gerenciar o cache e as sessões independentemente. Isso evita que problemas de cache afetem as sessões, o que pode afetar a receita. Cada instância do Redis é executada em seu próprio núcleo, o que melhora o desempenho.
-
Atualize o
.magento/services.yaml
arquivo de configuração.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
-
Atualize o
.magento.app.yaml
arquivo de configuração.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"
-
Enviar um Tíquete de suporte do Adobe Commerce para solicitar o provisionamento de uma nova instância Redis dedicada às sessões em ambientes de produção e de preparo. Incluir os atualizados
.magento/services.yaml
e.magento.app.yaml
arquivos de configuração. Isso não causará tempo de inatividade, mas requer uma implantação para ativar o novo serviço. -
Verifique se a nova instância está em execução e anote o número da porta.
code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
-
Adicione o número da porta à
.magento.env.yaml
arquivo de configuração.note note NOTE disable_locking
deve ser definido como1
.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
-
Remover sessões do banco de dados padrão (
db 0
) na instância do cache Redis.code language-bash redis-cli -h 127.0.0.1 -p 6374 -n 0 FLUSHDB
Durante a implantação, você deve ver as seguintes linhas no criar e implantar log:
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
Compactação de cache
Se você estiver usando mais de 6 GB de Redis maxmemory
, você pode usar a compactação de cache para reduzir o espaço consumido pelas chaves. Esteja ciente de que há um compromisso com o desempenho do lado do cliente. Se você tiver CPUs sobressalentes, ative-as. Consulte Usar Redis para armazenamento de sessão no Guia de configuração.
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%)