Redis configureren in Magento 2
Hoe configureer je Redis voor een Magento 2 omgeving?
In Magento 2 kan Redis eenvoudig ingesteld worden door gebruik te maken van de CLI-tools van Magento. In dit artikel leggen we je uit hoe je dit doet. We gaan er vanuit dat je bekend bent met redis en hoe je Redis configureert.
Redis cache
Om onderstaande commando's te kunnen gebruiken navigeer je naar de root van je webshop: /home/<gebruikersnaam>/domains/<domein>/application/
.
Let op bij dit pad gaan we er vanuit dat je Magento 2 shop in een map application
staat, dit kan afwijken.
Tevens gaan we er vanuit dat er gebruik gemaakt wordt van de standaard Redis socket.
Met het volgende commando kun je de Redis cache activeren:
php bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=/home/<gebruikersnaam>/domains/<domein>/var/run/redis.sock --cache-backend-redis-db=0
Daarnaast kun je Redis ook als full page cache oplossing gebruiken. Configureer de full page cache met het volgende commmando:
php bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=/home/<gebruikersnaam>/domains/<domein>/var/run/redis.sock --page-cache-redis-db=1
Bovenstaande commando's zullen de onderstaande configuratie toevoegen aan het env.php
bestand:
'cache' => [
'frontend' => [
'default' => [
'backend' => 'Cm_Cache_Backend_Redis',
'backend_options' => [
'server' => '/home/<gebruikersnaam>/domains/<domein>/var/run/redis.sock',
'database' => '0',
'port' => '0'
],
],
'page_cache' => [
'backend' => 'Cm_Cache_Backend_Redis',
'backend_options' => [
'server' => '/home/<gebruikersnaam>/domains/<domein>/var/run/redis.sock',
'port' => '0',
'database' => '1',
'compress_data' => '0'
],
],
],
],
In plaats van het gebruik van commando's kun je er ook voor kiezen om bovenstaande configuratie handmatig te plaatsen in het env.php
bestand.
Redis session
Naast de cache kunnen ook sessies in Redis worden opgeslagen. Redis session kun je instellen met het volgende commando:
php bin/magento setup:config:set --session-save=redis --session-save-redis-host=/home/<gebruikersnaam>/domains/<domein>/var/run/redis.sock --session-save-redis-db=2
We geven in het bovenstaande voorbeeld maar een beperkt aantal parameters mee. Indien paramaters niet worden meegegeven gebruikt Magento de standaard waardes. Een compleet overzicht van alle parameters die je kunt meegegeven aan het commando vind je hier.
Bovenstaand commando plaatst een soortgelijke configuratie in het env.php
bestand:
'session' => [
'save' => 'redis',
'redis' => [
'host' => '/home/<gebruikersnaam>/domains/<domein>/var/run/redis.sock',
'port' => '0',
'password' => '',
'timeout' => '2.5',
'persistent_identifier' => '',
'database' => '2',
'compression_threshold' => '2048',
'compression_library' => 'gzip',
'log_level' => '3',
'max_concurrency' => '6',
'break_after_frontend' => '5',
'break_after_adminhtml' => '30',
'first_lifetime' => '600',
'bot_first_lifetime' => '60',
'bot_lifetime' => '7200',
'disable_locking' => '0',
'min_lifetime' => '60',
'max_lifetime' => '2592000'
],
],
Ook bij Redis session kun je er ook voor kiezen om de configuratie te plaatsen in het env.php
bestand.
Configuratie testen
Zodra Redis voor de gewenste onderdelen geconfigureerd is, kunnen we testen of alles naar behoren werkt. Gebruik hiervoor het volgende commando:
redis-cli -s /home/<gebruikersnaam>/domains/<domein>/var/run/redis.sock monitor
Bezoek vervolgens de webshop waar Redis voor is ingesteld. Als Redis correct staat ingesteld zul je de vergelijkbare output zien in de console waar je het monitor commando hebt uitgevoerd:
Cache:
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"
1476826133.883312 [0 127.0.0.1:52369] "hget" "zc:k:ea6_GLOBAL__EVENT_CONFIG_CACHE" "d"
1476826133.898431 [0 127.0.0.1:52369] "hget" "zc:k:ea6_DB_PDO_MYSQL_DDL_STAGING_UPDATE_1" "d"
1476826133.898794 [0 127.0.0.1:52369] "hget" "zc:k:ea6_RESOLVED_STORES_D1BEFA03C79CA0B84ECC488DEA96BC68" "d"
1476826133.905738 [0 127.0.0.1:52369] "hget" "zc:k:ea6_DEFAULT_CONFIG_CACHE_STORE_DEFAULT_10__235__32__1080MAGENTO2" "d"
Session:
1476824834.187250 [0 127.0.0.1:52353] "select" "0"
1476824834.187587 [0 127.0.0.1:52353] "hmget" "sess_sgmeh2k3t7obl2tsot3h2ss0p1" "data" "writes"
1476824834.187939 [0 127.0.0.1:52353] "expire" "sess_sgmeh2k3t7obl2tsot3h2ss0p1" "1200"
1476824834.257226 [0 127.0.0.1:52353] "select" "0"
1476824834.257239 [0 127.0.0.1:52353] "hmset" "sess_sgmeh2k3t7obl2tsot3h2ss0p1" "data" "_session_validator_data|a:4:{s:11:\"remote_addr\";s:12:\"10.235.34.14\";s:8:\"http_via\";s:0:\"\";s:20:\"http_x_forwarded_for\";s:0:\"\";s:15:\"http_user_agent\";s:115:\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36\";}_session_hosts|a:1:{s:12:\"10.235.32.10\";b:1;}admin|a:0:{}default|a:2:{s:9:\"_form_key\";s:16:\"e331ugBN7vRjGMgk\";s:12:\"visitor_data\";a:3:{s:13:\"last_visit_at\";s:19:\"2016-10-18 21:06:37\";s:10:\"session_id\";s:26:\"sgmeh2k3t7obl2tsot3h2ss0p1\";s:10:\"visitor_id\";s:1:\"9\";}}adminhtml|a:0:{}customer_base|a:1:{s:20:\"customer_segment_ids\";a:1:{i:1;a:0:{}}}checkout|a:0:{}" "lock" "0"