Use Valkey for session storage
Adobe Commerce provides command-line options to configure Valkey session storage.
Run the setup:config:set
command and specify Valkey-specific parameters.
bin/magento setup:config:set --session-save=valkey --session-save-valkey-<parameter_name>=<parameter_value>...
-
--session-save=valkey
enables Valkey session storage. If this feature is already enabled, omit this parameter. -
--session-save-valkey-<parameter_name>=<parameter_value>
is a list of parameter/value pairs that configure session storage:
bin/magento setup:config:set --session-save=redis --session-save-redis-<parameter_name>=<parameter_value>...
Known issues with phpredis and php-fpm.
Important: If you use Valkey for more than one type of caching, the database numbers must be different. It is recommended that you assign the default caching database number to
0
, the page-caching database number to 1
, and the session storage database number to 2
.0
to disable compression (recommended when suhosin.session.encrypt = On
).Set to any of the following, listed in order from least verbose to most verbose:
- 0 (emergency: only the most severe errors)
- 1 (alert: immediate action required)
- 2 (critical: application component unavailable)
- 3 (error: runtime errors, not critical but must be monitored)
- 4 (warning: additional information, recommended)
- 5 (notice: normal but significant condition)
- 6 (info: informational messages)
- 7 (debug: the most information for development or testing only)
0
to disable.0
to disable.0
to disable.Example
The following example sets Valkey as the session data store, sets the host to 127.0.0.1
, sets the log level to 4
, and sets the database number to 2
. All other parameters are set to the default value.
bin/magento setup:config:set --session-save=valkey --session-save-valkey-host=127.0.0.1 --session-save-valkey-log-level=4 --session-save-valkey-db=2
bin/magento setup:config:set --session-save=redis --session-save-redis-host=127.0.0.1 --session-save-redis-log-level=4 --session-save-redis-db=2
Result
Commerce adds lines similar to the following to <magento_root>app/etc/env.php
:
'session' => [
'save' => 'valkey',
'redis' => [
'host' => '127.0.0.1',
'port' => '6379',
'password' => '',
'timeout' => '2.5',
'persistent_identifier' => '',
'database' => '2',
'compression_threshold' => '2048',
'compression_library' => 'gzip',
'log_level' => '4',
'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',
],
],
0
(the default is 3600
), then Valkey sessions expire in the number of seconds specified in min_lifetime (the default is 60
). This discrepancy is due to differences in how Valkey and session cookies interpret a lifetime value of 0
. If that behavior is not desired, increase the value of min_lifetime.Verify Valkey connection
To verify that Valkey and Commerce are working together properly, log in to the server where Valkey is running, open a terminal, and use either the valkey-cli monitor
command or the redis-cli ping
command.
Valkey monitor command
valkey-cli monitor
Sample session-storage output:
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"
... more ...
Valkey ping command
valkey-cli ping
The expected response is: PONG
.
If both commands succeeded, Valkey is set up properly.
Inspecting compressed data
To inspect compressed session data and the page cache, the RESP.app supports automatic decompression of Commerce 2 session and page cache and displays PHP session data in a human-readable format.