Bonnes pratiques pour la configuration du service Redis et Valkey
Utilisez ces recommandations pour configurer Redis ou Valkey pour la mise en cache et les sessions Adobe Commerce.
- Configurer le cache L2
- Activer la connexion esclave
- Précharger les clés
- Activer le cache obsolète
- Séparer le cache et la session
- Compresser le cache
- Exemples de configurations
ece-tools. Sinon, effectuez une mise à niveau vers la dernière version. Vous pouvez vérifier la version installée dans votre environnement local à l’aide de la commande de l’interface de ligne de commande composer show magento/ece-tools.Configurer le cache L2
Configurez le cache L2 en définissant la variable de déploiement REDIS_BACKEND ou VALKEY_BACKEND dans le fichier de configuration .magento.env.yaml.
Pour Redis, utilisez :
| code language-yaml |
|---|
|
Pour la configuration de l’environnement sur l’infrastructure cloud, consultez REDIS_BACKEND référence de configuration dans le guide Commerce sur l’infrastructure cloud.
Pour les installations sur site, consultez Configuration de la mise en cache de page Redis dans le Guide de configuration.
Pour Valkey, utilisez :
| code language-yaml |
|---|
|
Pour la configuration de l’environnement sur l’infrastructure cloud, consultez VALKEY_BACKEND référence de configuration dans le guide Commerce sur l’infrastructure cloud.
Pour les installations sur site, voir Configurer Valkey dans le Guide de configuration.
Dimensionnement de la mémoire cache L2 pour Adobe Commerce Cloud
Le cache L2 utilise un système de fichiers temporaire (/dev/shm) comme mécanisme de stockage. Contrairement aux magasins de valeur-clé spécialisés, tmpfs n’a pas de politique d’éviction des clés, de sorte que l’utilisation de la mémoire peut augmenter sans limite. Pour éviter l’épuisement, Adobe Commerce efface automatiquement le stockage L2 lorsque l’utilisation atteint un seuil configurable (95 % par défaut). Vous pouvez contrôler la consommation de mémoire en demandant un montage /dev/shm plus important ou en abaissant le seuil de nettoyage.
Ajustez l’utilisation maximale de la mémoire cache L2 en fonction des besoins de votre projet. Utilisez l’une des méthodes suivantes :
- Créez un ticket d’assistance pour ajuster la taille du montage
/dev/shm. Pour ce scénario, Adobe recommande de définir la taille de montage/dev/shmsur 15 Go. - Ajustez la propriété
cleanup_percentageau niveau de l’application pour limiter l’utilisation du stockage et la mémoire disponible pour d’autres services.
Vous pouvez ajuster la configuration dans la configuration de déploiement sous le groupe de configuration du cachecache/frontend/default/backend_options/cleanup_percentage.
cleanup_percentage a été introduite dans Adobe Commerce 2.4.4.Les exemples suivants montrent le code de configuration dans le fichier .magento.env.yaml :
| code language-yaml |
|---|
|
| code language-yaml |
|---|
|
Les exigences de cache varient en fonction de la configuration de votre projet et du code tiers personnalisé. Taille de la mémoire cache L2 afin que le cache puisse fonctionner sans accès fréquents au seuil.
Idéalement, l’utilisation de la mémoire cache L2 se stabilise en dessous du seuil afin d’éviter des effacements de stockage fréquents.
Vous pouvez vérifier l’utilisation de la mémoire cache L2 sur chaque nœud du cluster en exécutant la commande de ligne de commande suivante et en examinant la ligne de /dev/shm.
df -h /dev/shm
L’utilisation peut varier d’un nœud à l’autre, mais elle doit converger vers une valeur similaire.
Activer la connexion esclave
Activez la connexion esclave dans le fichier .magento.env.yaml pour permettre à Adobe Commerce d’utiliser une connexion de cache en lecture seule supplémentaire pour les lectures tout en continuant à utiliser le point d’entrée principal pour les écritures. Cette configuration peut réduire la charge de lecture sur le service de cache principal et distribuer le trafic de lecture plus efficacement.
Pour Redis, utilisez :
| code language-yaml |
|---|
|
Pour la configuration de l’environnement sur l’infrastructure Commerce Cloud, consultez REDIS_USE_SLAVE_CONNECTION dans le Guide de Commerce sur l’infrastructure cloud.
Pour les installations sur site d’Adobe Commerce, configurez la nouvelle mise en œuvre du cache Redis à l’aide des commandes bin/magento setup. Voir Utiliser Redis pour le cache par défaut dans le Guide de configuration.
Pour Valkey, utilisez :
| code language-yaml |
|---|
|
Pour la configuration de l’environnement sur l’infrastructure Commerce Cloud, consultez VALKEY_USE_SLAVE_CONNECTION dans le guide Commerce sur l’infrastructure cloud.
Pour les installations sur site d’Adobe Commerce, configurez la nouvelle implémentation du cache Valkey à l’aide des commandes bin/magento setup. Voir Configurer Valkey dans le Guide de configuration.
Précharger les clés
Magento charge généralement les entrées de cache de Redis ou de Valkey une clé à la fois. La fonction de préchargement vous permet de fournir une liste des clés fréquemment utilisées que Magento récupère dans un seul pipeline lors du premier accès lors d’une requête. Magento conserve ensuite les valeurs récupérées dans la mémoire PHP pour le reste de cette requête, ce qui réduit les allers-retours répétés vers Redis ou Valkey et peut améliorer les performances d'amorçage de requête pour ces clés.
Vous pouvez identifier les clés fréquemment utilisées en surveillant les commandes actives sur Redis ou Valkey :
Les clés de préchargement sont configurées dans le fichier de configuration .magento.env.yaml.
| code language-yaml |
|---|
|
Pour répertorier les clés, exécutez la commande suivante :
| code language-terminal |
|---|
|
Au bout de 10 secondes, appuyez sur Ctrl+C. Exécutez ensuite la commande suivante :
| code language-terminal |
|---|
|
Ce journal répertorie les clés que vous pouvez précharger. Pour afficher le contenu d’une clé, exécutez la commande suivante :
| code language-terminal |
|---|
|
Pour les installations sur site, consultez la section Fonctionnalité de préchargement Redis du Guide de configuration.
Les clés de préchargement sont configurées dans le fichier de configuration .magento.env.yaml.
| code language-yaml |
|---|
|
Pour répertorier les clés, exécutez la commande suivante :
| code language-terminal |
|---|
|
Au bout de 10 secondes, appuyez sur Ctrl+C. Exécutez ensuite la commande suivante :
| code language-terminal |
|---|
|
Ce journal répertorie les clés que vous pouvez précharger. Pour afficher le contenu d’une clé, exécutez la commande suivante :
| code language-terminal |
|---|
|
Pour les installations sur site, consultez la section Fonctionnalité de préchargement Valkey du Guide de configuration.
Activer le cache obsolète
Le cache obsolète est une fonctionnalité de cache L2 de RemoteSynchronizedCache. Lorsqu’il est activé, Adobe Commerce peut servir une valeur de cache local existante à partir de /dev/shm alors qu’une autre requête régénère déjà la même entrée, au lieu de faire attendre chaque requête simultanée. Cela réduit les bousculades du cache et les conflits de verrouillage lors de la régénération des entrées de cache coûteuses.
Fonctionnement
Avec RemoteSynchronizedCache, Magento conserve deux copies de chaque entrée du cache : une copie locale dans /dev/shm et une copie distante dans Redis ou Valkey. Lorsque la copie distante n’est pas disponible et qu’un verrou de régénération existe déjà pour cette clé, les requêtes simultanées peuvent recevoir la valeur locale précédente au lieu d’attendre que la nouvelle valeur soit écrite.
Pour activer le cache obsolète, configurez-le dans le fichier .magento.env.yaml.
Pour Redis :
| code language-yaml |
|---|
|
Pour Valkey :
| code language-yaml |
|---|
|
full_page n’est pas pertinent pour Adobe Commerce dans les projets d’infrastructure cloud, car ils utilisent Fastly.Pour les installations sur site, consultez Options de cache obsolètes dans le Guide de configuration.
default, ce qui applique le comportement du cache obsolète à toutes les entrées du cache qui utilisent ce front-end. Les types de cache principaux de Magento fonctionnent généralement comme prévu avec ce paramètre. Cependant, si votre projet inclut du code personnalisé ou des extensions qui écrivent dans le cache via l’API \Magento\Framework\App\Cache générique (par exemple $this->cache->save()) sans interface utilisateur frontale de cache dédiée, ces entrées peuvent également servir des valeurs obsolètes pendant la régénération.default et activez-le uniquement pour les types de cache sélectionnés, comme cela est généralement fait sur site.Activation du cache obsolète par type de cache individuellement
Vous pouvez activer le cache obsolète uniquement pour les types de cache sélectionnés en définissant une interface de cache dédiée dans .magento.env.yaml et en y mappant les types de cache sélectionnés.
Pour fonctionner correctement, le front-end personnalisé doit être défini comme un front-end complet sous CACHE_CONFIGURATION.frontend. La définition de use_stale_cache: true uniquement pour un nouveau nom front-end ne suffit pas.
Exemples de configurations
Pour Redis :
| code language-yaml |
|---|
|
Pour Valkey :
| code language-yaml |
|---|
|
stale_cache_enabled afin que le nouveau front-end conserve le même comportement.Instances de cache et de session distinctes
La séparation du cache et des sessions permet de les gérer indépendamment. Il réduit les conflits entre le cache et le trafic de session, empêche la pression liée au cache d’affecter les sessions et permet à chaque instance Redis ou Valkey d’être dimensionnée et ajustée pour sa propre charge de travail.
Suivez les étapes ci-dessous pour configurer une instance dédiée pour les sessions :
-
Mettez à jour le fichier de configuration
.magento/services.yaml.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 -
Mettez à jour le fichier de configuration
.magento.app.yaml.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" -
Demandez une nouvelle instance Redis dédiée aux sessions sur les environnements de production et d’évaluation.
Envoyez un ticket d’assistance . Incluez les fichiers de configuration
.magento/services.yamlet.magento.app.yamlmis à jour.Cette mise à jour n’entraîne pas d’interruption, mais un déploiement est nécessaire pour activer le nouveau service.
-
Vérifiez que la nouvelle instance est en cours d’exécution et notez le numéro de port.
code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp -
Ajoutez le numéro de port au fichier de configuration
.magento.env.yaml.note important IMPORTANT Configurez le port de session Redis uniquement si ece-toolsne parvient pas à le détecter automatiquement à partir de la définition du service de session RedisMAGENTO_CLOUD_RELATIONSHIPS.note note NOTE Définissez disable_lockingsur1pour de meilleures performances. Dans de rares cas où des conditions de concurrence se produisent en raison d’une activité de session simultanée élevée, définissez-la sur0pour activer le verrouillage.code language-yaml SESSION_CONFIGURATION: _merge: true redis: timeout: 5 disable_locking: 1 bot_first_lifetime: 60 bot_lifetime: 7200 max_lifetime: 2592000 min_lifetime: 60 -
Supprimez les sessions de la base de données par défaut (
db 0) sur l’instance de cache Redis.code language-terminal redis-cli -h 127.0.0.1 -p 6370 -n 0 FLUSHDB
-
Mettez à jour le fichier de configuration
.magento/services.yaml.code language-yaml mysql: type: mysql:10.4 disk: 35000 valkey: type: valkey:8.0 valkey-session: # This is for the new Valkey instance type: valkey:8.0 search: type: elasticsearch:7.9 disk: 5000 rabbitmq: type: rabbitmq:3.8 disk: 2048 -
Mettez à jour le fichier de configuration
.magento.app.yaml.code language-yaml relationships: database: "mysql:mysql" valkey: "valkey:valkey" valkey-session: "valkey-session:valkey" # Relationship of the new Valkey instance search: "search:elasticsearch" rabbitmq: "rabbitmq:rabbitmq" -
Demandez une nouvelle instance Valkey dédiée aux sessions sur les environnements de production et d’évaluation.
Envoyez un ticket d’assistance . Incluez les fichiers de configuration
.magento/services.yamlet.magento.app.yamlmis à jour.Cette mise à jour n’entraîne pas d’interruption, mais un déploiement est nécessaire pour activer le nouveau service.
-
Vérifiez que la nouvelle instance est en cours d’exécution et notez le numéro de port.
code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp -
Ajoutez le numéro de port au fichier de configuration
.magento.env.yaml.note important IMPORTANT Configurez le port de session Valkey uniquement si ece-toolsne parvient pas à le détecter automatiquement à partir de la définition de service de sessionMAGENTO_CLOUD_RELATIONSHIPSValkey.note note NOTE Définissez disable_lockingsur1pour de meilleures performances. Dans de rares cas où des conditions de concurrence se produisent en raison d’une activité de session simultanée élevée, définissez-la sur0pour activer le verrouillage.code language-yaml SESSION_CONFIGURATION: _merge: true redis: # keep 'redis' even if you are using Valkey. timeout: 5 disable_locking: 1 bot_first_lifetime: 60 bot_lifetime: 7200 max_lifetime: 2592000 min_lifetime: 60 -
Supprimez les sessions de la base de données par défaut (
db 0) sur l’instance de cache Valkey.code language-terminal valkey-cli -h 127.0.0.1 -p 6370 -n 0 FLUSHDB
Compression du cache
Si vous utilisez plus de 6 Go de maxmemory Redis ou Valkey, vous pouvez activer la compression du cache pour réduire l’espace consommé par les clés. Gardez à l’esprit que ce paramètre échange les performances côté client contre des économies de mémoire. Si vous disposez d’une capacité CPU disponible, envisagez de l’activer. Voir Utilisation de Redis pour le stockage de session ou Utilisation de Valkey pour le stockage de session dans le Guide de configuration.
stage:
deploy:
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%)
Activer la libération asynchrone
Pour activer le lazyfree sur Adobe Commerce sur les infrastructures cloud, envoyez un ticket d’assistance Adobe Commerce en demandant que la configuration Redis ou Valkey suivante soit appliquée à vos environnements :
lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
replica-lazy-flush yes
lazyfree-lazy-user-del yes
Lorsque lazyfree est activé, Redis ou Valkey décharge la récupération de la mémoire sur les threads d’arrière-plan pour les évictions, les expirations, les suppressions initiées par le serveur, les suppressions d’utilisateurs et les vidages de jeux de données de réplication. Cela réduit le blocage du thread principal et peut réduire la latence des requêtes.
lazyfree-lazy-user-del yes fait en sorte que la commande DEL se comporte comme UNLINK, ce qui annule immédiatement le lien entre les clés et libère leur mémoire de manière asynchrone.Activer les E/S multithreads
Pour activer le threading d’E/S Redis sur Adobe Commerce sur l’infrastructure cloud, envoyez un ticket d’assistance Adobe Commerce en demandant la configuration de threading d’E/S ci-dessous. Cette configuration peut améliorer le débit en déchargeant les lectures et écritures de socket ainsi que l’analyse des commandes du thread principal, au détriment d’une utilisation plus élevée de CPU. Validez sous charge et surveillez vos hôtes.
Pour Redis :
| code language-text |
|---|
|
Pour Valkey :
| code language-text |
|---|
|
io-threads ou désactivez les lectures dans les threads d’E/S.Augmentation des délais d’expiration et des reprises du client
Augmentez la tolérance du client de cache Redis ou Valkey à de courtes périodes de saturation en ajustant les options du serveur principal dans .magento.env.yaml.
stage:
deploy:
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
backend_options:
connect_retries: 3 # Number of connection retries
remote_backend_options:
read_timeout: 10 # Timeout
Ces paramètres peuvent réduire les erreurs de connexion intermittentes et de délai d’expiration de lecture pendant les pics courts en réessayant la configuration de la connexion et en laissant plus de temps pour les réponses de Redis ou Valkey.
Exemples de configurations
Utilisez les exemples suivants comme point de départ pour vos configurations de service Redis ou Valkey.
Appliquer toutes les recommandations de bonnes pratiques
| code language-yaml |
|---|
|
| code language-yaml |
|---|
|
Appliquer toutes les recommandations de bonnes pratiques et séparer le cache obsolète par type de cache
| code language-yaml |
|---|
|
| code language-yaml |
|---|
|
Informations supplémentaires
Consultez les rubriques connexes suivantes :