[No local]{class="badge informative" title="Aplicável somente a projetos locais do Adobe Commerce."}
Configurar Redis para cache padrão e de páginas
O Commerce fornece opções de linha de comando para configurar a página Redis e o cache padrão. Embora você possa configurar o armazenamento em cache editando o arquivo <Commerce-install-dir>app/etc/env.php, o uso da linha de comando é o método recomendado, especialmente para configurações iniciais. A linha de comando fornece validação, garantindo que a configuração esteja sintaticamente correta.
Pré-requisito:
Instale o Redis antes de continuar.
Implementações do cache Redis
A Adobe Commerce usou estas implementações de back-end do cache Redis:
- Infraestrutura Redis herdada (
Cm_Cache_Backend_Redis) - Implementação obsoleta usada em configurações Redis mais antigas. - Infraestrutura Redis (
Magento\Framework\Cache\Backend\Redis) - Infraestrutura usada pela configuração de linha de comando neste tópico para cache padrão e de página. - Back-end do cache L2 (
Magento\Framework\Cache\Backend\RemoteSynchronizedCache) - Implementação de cache de dois níveis que usa Redis como back-end remoto e armazenamento de cache de arquivo local para sincronizar dados de cache entre nós. Consulte Configuração de cache de dois níveis.
Configurar cache padrão do Redis
Execute o comando setup:config:set e especifique parâmetros específicos para o cache padrão Redis.
bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-<parameter>=<value>...
Parâmetros comuns incluem:
-
--cache-backend=redishabilita o cache padrão Redis. Se esse recurso já tiver sido ativado, omita esse parâmetro. -
--cache-backend-redis-<parameter>=<value>é uma lista de pares de chave-e-valor que configuram o cache padrão:
cache-backend-redis-server127.0.0.1cache-backend-redis-port6379cache-backend-redis-dbImportante: se você usar Redis para mais de um tipo de cache, os números do banco de dados deverão ser diferentes. É recomendável atribuir o número do banco de dados de cache padrão a 0, o número do banco de dados de cache da página a 1 e o número do banco de dados de armazenamento da sessão a 2.
0cache-backend-redis-passwordauth, que requer que os clientes se autentiquem para acessar o banco de dados. A senha é configurada diretamente no arquivo de configuração do Redis: /etc/redis/redis.confcache-backend-redis-compress-data0 para desabilitar a compactação.1cache-backend-redis-compression-libsnappy, lzf, l4z, zstd e gzip. Deixe em branco para determinar automaticamente.cache-backend-redis-use-luaPadrão: manter em
0. O modo Lua é desativado por padrão para evitar regressões de desempenho conhecidas e problemas de perda de cache do GraphQL introduzidos pela biblioteca Redis agrupada (1.17.x) quando Lua foi ativada.0cache-backend-redis-use-lua-on-gcbackend_clean_cache).Padrão: manter em
1. Ativado intencionalmente para garantir a limpeza atômica do conjunto de tags durante o GC. Sem ela, uma condição de corrida pode ocorrer quando o cron backend_clean_cache é executado ao mesmo tempo que uma operação de salvamento de cache, deixando entradas de cache sem um registro correspondente no índice de tag de cache. Isso faz com que a invalidação baseada em tags falhe silenciosamente — por exemplo, atualizar um preço de produto pode não invalidar o cache do produto, exigindo uma liberação de cache completa.1Modo Lua
Quando habilitado, o modo Lua agrupa várias operações Redis (gravações em cache, atualizações de tags, coleta de lixo) em um único script atômico executado no lado do servidor via EVALSHA. Isso impede a intercalação de solicitações simultâneas, por exemplo, garantir que uma entrada de cache e sua associação de tag sejam gravadas juntas.
use_lua e use_lua_on_gc sem entender as implicações para sua versão do Adobe Commerce:use_lua: habilitar isso no Adobe Commerce 2.4.7 ou 2.4.8 (bibliotecacolinmollenhour/cache-backend-redis1.17.1) pode causar corrupção de cache e problemas de perda de cache do GraphQL.use_lua_on_gc: desabilitar isso no Adobe Commerce 2.4.8 remove a proteção atômica durante a coleta de lixo e pode fazer com que a invalidação do cache com base em marcas falhe silenciosamente, exigindo uma limpeza completa do cache para se recuperar.
Exemplo de comando (cache padrão)
O exemplo a seguir habilita o cache padrão Redis, define o host como 127.0.0.1 e atribui o número do banco de dados como 0. Redis usa valores padrão para todos os outros parâmetros.
bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=127.0.0.1 --cache-backend-redis-db=0
Configurar cache de página Redis
Para configurar o cache da página Redis no Commerce, execute o comando setup:config:set com parâmetros adicionais.
bin/magento setup:config:set --page-cache=redis --page-cache-redis-<parameter>=<value>...
Parâmetros comuns incluem:
-
--page-cache=redishabilita o cache de página Redis. Se esse recurso já tiver sido ativado, omita esse parâmetro. -
--page-cache-redis-<parameter>=<value>é uma lista de pares de chave-e-valor que configuram o armazenamento em cache da página:
page-cache-redis-server127.0.0.1page-cache-redis-port6379page-cache-redis-dbImportante: se você usar Redis para mais de um tipo de cache, os números do banco de dados deverão ser diferentes. É recomendável atribuir o número do banco de dados de cache padrão a 0, o número do banco de dados de cache da página a 1 e o número do banco de dados de armazenamento da sessão a 2.
0page-cache-redis-passwordauth, que requer que os clientes se autentiquem para acessar o banco de dados. Configure a senha no arquivo de configuração Redis: /etc/redis/redis.confpage-cache-redis-compress-data1 para compactar o cache de página inteira. Use 0 para desabilitar a compactação.0page-cache-redis-compression-libsnappy, lzf, l4z, zstd e gzip. Deixe em branco para determinar automaticamente.O exemplo a seguir habilita o cache de página Redis, define o host como 127.0.0.1 e atribui o número do banco de dados como 1. Todos os outros parâmetros são definidos com o valor padrão.
bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=127.0.0.1 --page-cache-redis-db=1
Revisar a configuração do ambiente do Commerce
A execução dos comandos para configurar o cache Redis atualiza a configuração do ambiente Commerce (<Commerce-install-dir>app/etc/env.php):
'cache' => [
'frontend' => [
'default' => [
'backend' => 'Magento\\Framework\\Cache\\Backend\\Redis',
'backend_options' => [
'server' => '127.0.0.1',
'database' => '0',
'port' => '6379'
],
],
'page_cache' => [
'backend' => 'Magento\\Framework\\Cache\\Backend\\Redis',
'backend_options' => [
'server' => '127.0.0.1',
'port' => '6379',
'database' => '1',
'compress_data' => '0'
]
]
]
],
Configurar opções adicionais de cache
Recurso de pré-carregamento Redis
Como o Commerce armazena dados de configuração no cache Redis, você pode pré-carregar dados que são reutilizados entre páginas. Para encontrar chaves que devem ser pré-carregadas, analise os dados transferidos de Redis para Commerce. A Adobe sugere pré-carregar dados que são carregados em todas as páginas, como SYSTEM_DEFAULT, EAV_ENTITY_TYPES e DB_IS_UP_TO_DATE.
O Redis usa pipeline para solicitações de carga compostas. As chaves devem incluir o prefixo do banco de dados; por exemplo, se o prefixo do banco de dados for 061_, a chave de pré-carregamento será semelhante a: 061_SYSTEM_DEFAULT
'cache' => [
'frontend' => [
'default' => [
'id_prefix' => '061_',
'backend' => 'Magento\\Framework\\Cache\\Backend\\Redis',
'backend_options' => [
'server' => 'redis',
'database' => '0',
'port' => '6379',
'password' => '',
'compress_data' => '1',
'compression_lib' => '',
'preload_keys' => [
'061_EAV_ENTITY_TYPES',
'061_GLOBAL_PLUGIN_LIST',
'061_DB_IS_UP_TO_DATE',
'061_SYSTEM_DEFAULT',
],
]
],
'page_cache' => [
'id_prefix' => '061_'
]
]
]
Ao usar o recurso de pré-carregamento com um cache L2, você deve adicionar o sufixo :hash às chaves. O cache L2 transfere apenas o hash dos dados, não os dados reais.
'preload_keys' => [
'061_EAV_ENTITY_TYPES:hash',
'061_GLOBAL_PLUGIN_LIST:hash',
'061_DB_IS_UP_TO_DATE:hash',
'061_SYSTEM_DEFAULT:hash',
],
Geração paralela
A partir da versão 2.4.0 do Commerce, a Adobe apresentou a opção allow_parallel_generation para usuários que desejam eliminar a espera por bloqueios. Ela está desativada por padrão e a Adobe recomenda desativá-la até que você tenha configurações e/ou blocos em excesso.
Para habilitar a geração paralela:
bin/magento setup:config:set --allow-parallel-generation
Como é um sinalizador, não é possível desabilitá-lo com um comando. Defina manualmente o valor de configuração como false:
'cache' => [
'frontend' => [
'default' => [
'id_prefix' => 'b0b_',
'backend' => 'Magento\\Framework\\Cache\\Backend\\Redis',
'backend_options' => [
'server' => 'redis',
'database' => '0',
'port' => '6379',
'password' => '',
'compress_data' => '1',
'compression_lib' => ''
]
],
'page_cache' => [
'id_prefix' => 'b0b_'
]
],
'allow_parallel_generation' => false
],
Extensão PHP Redis
Use a extensão nativa do PHP Redis (phpredis) quando seu ambiente permitir:
Usar apt
Para Debian ou Ubuntu, use apt:
sudo apt-get install php-redis
sudo systemctl restart php-fpm
php -m | grep redis
Usar pecl
Como alternativa, use pecl:
sudo pecl install redis
echo "extension=redis.so" | sudo tee /etc/php/<version>/mods-available/redis.ini
sudo phpenmod redis
sudo systemctl restart php-fpm
php -m | grep redis
Verifique a conexão Redis
Para verificar se o Redis e o Commerce estão funcionando corretamente:
- Faça logon no servidor que executa o Redis e o Commerce.
- Abra um terminal.
- Verifique a conexão usando o comando
redis-cli monitorouredis-cli ping.
Se os comandos forem bem-sucedidos, o Redis estará em execução e poderá se comunicar com o aplicativo do Commerce. Se falharem, há um problema de conexão entre o Redis e o Commerce que você precisa resolver.
Comando do monitor Redis
redis-cli monitor
Exemplo de saída de cache de página:
1476826133.810090 [0 127.0.0.1:52366] "select" "1"
1476826133.816293 [0 127.0.0.1:52367] "select" "0"
1476826133.817461 [0 127.0.0.1:52367] "hget" "zc:k:ea6_GLOBAL__DICONFIG" "d"
1476826133.829666 [0 127.0.0.1:52367] "hget" "zc:k:ea6_DICONFIG049005964B465901F774DB9751971818" "d"
1476826133.837854 [0 127.0.0.1:52367] "hget" "zc:k:ea6_INTERCEPTION" "d"
1476826133.868374 [0 127.0.0.1:52368] "select" "1"
1476826133.869011 [0 127.0.0.1:52369] "select" "0"
1476826133.869601 [0 127.0.0.1:52369] "hget" "zc:k:ea6_DEFAULT_CONFIG_CACHE_DEFAULT__10__235__32__1080MAGENTO2" "d"
1476826133.872317 [0 127.0.0.1:52369] "hget" "zc:k:ea6_INITIAL_CONFIG" "d"
1476826133.879267 [0 127.0.0.1:52369] "hget" "zc:k:ea6_GLOBAL_PRIMARY_PLUGIN_LIST" "d"
...
Se ambos os comandos forem bem-sucedidos, o Redis será configurado corretamente.
Inspecionar dados compactados
Para inspecionar dados de sessão compactados e cache de página, use a ferramenta RESP.app. Ele suporta a descompressão automática de dados de sessão e cache de página do Commerce 2 e exibe os dados da sessão PHP em um formato legível.