Abilita connessione slave Redis
Abilitare una connessione slave Redis nel file di configurazione .magento.env.yaml
per consentire a un solo nodo di gestire il traffico di lettura/scrittura mentre gli altri nodi gestiscono il traffico di sola lettura.
stage:
deploy:
REDIS_USE_SLAVE_CONNECTION: true
Vedi REDIS_USE_SLAVE_CONNECTION nella Guida di Commerce sull'infrastruttura cloud.
Per le installazioni Adobe Commerce locali, configurare la nuova implementazione della cache Redis utilizzando i comandi bin/magento:setup
. Vedere Utilizzare Redis per la cache predefinita nella Guida alla configurazione.
Precarica chiavi
Per riutilizzare i dati tra pagine, elencare le chiavi per il precaricamento nel file di configurazione .magento.env.yaml
.
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'
Per le installazioni locali, vedere Funzionalità di precaricamento Redis nella Guida alla configurazione.
Abilita cache non aggiornata
Riduci i tempi di attesa di blocco e migliora le prestazioni, soprattutto quando si tratta di numerosi blocchi e chiavi di cache, utilizzando una cache obsoleta durante la generazione in parallelo di una nuova cache. Abilitare la cache non aggiornata e definire i tipi di cache nel file di configurazione .magento.env.yaml
:
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"
full_page
non è rilevante per i progetti di infrastruttura cloud di Adobe Commerce, perché utilizza Fastly.Per la configurazione delle installazioni locali, vedere Opzioni cache non aggiornate nella Guida alla configurazione.
Cache Redis e istanze di sessione separate
La separazione della cache Redis dalla sessione Redis consente di gestire la cache e le sessioni in modo indipendente. Evita che i problemi di cache influiscano sulle sessioni, il che potrebbe influire sui ricavi. Ogni istanza Redis viene eseguita sul proprio core, migliorando le prestazioni.
-
Aggiornare il file di configurazione
.magento/services.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
-
Aggiornare il file di configurazione
.magento.app.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"
-
Invia un ticket di supporto Adobe Commerce per richiedere il provisioning di una nuova istanza Redis dedicata alle sessioni negli ambienti di produzione e staging. Includere i file di configurazione
.magento/services.yaml
e.magento.app.yaml
aggiornati. Questo non causerà tempi di inattività, ma richiede una distribuzione per attivare il nuovo servizio. -
Verifica che la nuova istanza sia in esecuzione e annota il numero di porta.
echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
-
Aggiungere il numero di porta al file di configurazione
.magento.env.yaml
.IMPORTANT
Configurare la porta di sessione Redis solo seece-tools
non è in grado di rilevarla automaticamente dalla definizione del servizio di sessione RedisMAGENTO_CLOUD_RELATIONSHIPS
.NOTE
disable_locking
deve essere impostato su1
.SESSION_CONFIGURATION: _merge: true redis: port: 6374 # check the port in $MAGENTO_CLOUD_RELATIONSHIPS and put it here (by default, you can delete this line!!) timeout: 5 disable_locking: 1 bot_first_lifetime: 60 bot_lifetime: 7200 max_lifetime: 2592000 min_lifetime: 60
-
Rimuovere le sessioni dal database predefinito (
db 0
) nell'istanza della cache Redis.redis-cli -h 127.0.0.1 -p 6374 -n 0 FLUSHDB
Durante la distribuzione, nel registro build e distribuzione dovrebbero essere visualizzate le righe seguenti:
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
Compressione cache
Se si utilizzano più di 6 GB di Redis maxmemory
, è possibile utilizzare la compressione della cache per ridurre lo spazio utilizzato dalle chiavi. Tieni presente che esiste un compromesso con le prestazioni lato client. Se si dispone di CPU di riserva, attivarle. Vedere Utilizzare Redis per l'archiviazione della sessione nella Guida alla configurazione.
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%)