Magento 2 Redis

Magento 2 Redis

Magento 2 Redis Tutorial, How to Install and Configure for Default Cache, Page Cache and Sessions Storage.

Redis is an optional backend cache provided that allow storage in memory of cached parts, compared to the default Magento cache that stores cache parts in files on disk.

Install #

Magento 2 Redis Extensions comes pre-installed as part of the Magento 2 package so there is no need to do a install but to take advantage of it you have to Configure Magento 2 to use Redis.

Configuration #

Redis configuration for a Magento 2 store is stored inside /app/etc/env.php .

Redis can be used in 2 ways in a Magento 2 store:

With Redis #

Running Magento 2 with Redis enabled will increase speed as Redis is a fast way to cache different areas of the Magento application.

Without Redis #

Magento 2 can run with Redis disabled. Below is a example of a /app/etc/env.php without Redis:

Cache #

Default cache #

Below command can be executed in a shell console to enable Redis as default cache storage:

bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=127.0.0.1 --cache-backend-redis-db=0
  • replace 127.0.0.1 with the Redis server IP

If you don’t have Redis running Magento will show a error message, as on executing this command it also trys to connect to the Redis server instance.

Connection to Redis 127.0.0.1:6379 failed after 2 failures.Last Error : (111) Connection refused

If you have Redis server running then the message will be:

We saved default values for these options: db-engine, db-model, db-init-statements.

The Redis default cache command adds these lines to your /app/etc/env.php, under ‘cache’ => ‘frontend’:

...
    'default' => [
                'backend' => 'Cm_Cache_Backend_Redis',
                'backend_options' => [
                    'server' => '127.0.0.1',
                    'database' => '0',
                    'port' => '6379'
                ],
            ],
...

Redis Page Caching #

To enable Redis Page caching the following command can be executed:

bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=127.0.0.1 --page-cache-redis-db=1
  • replace 127.0.0.1 with the Redis server IP

The returned message is :

You saved the new configuration.

The Page Caching command adds these lines to your /app/etc/env.php, under ‘cache’ => ‘frontend’:

        'page_cache' => [
                    'backend' => 'Cm_Cache_Backend_Redis',
                    'backend_options' => [
                        'server' => '127.0.0.1',
                        'port' => '6379',
                        'database' => '1',
                        'compress_data' => '0'
                    ]
                ]
...

Session Storage #

Redis an be used to store the Sessions of your customers. This can be enabled in 2 ways:

Session Cache Command Line #

Command line can be used to enable Redis:

bin/magento setup:config:set --session-save=redis --session-save-redis-host=127.0.0.1 --session-save-redis-log-level=3 --session-save-redis-db=2

This will show if successful:

You saved the new configuration.

Session Cache Environment File #

To store Magento Sessions in Redis you can use command:

bin/magento setup:config:set --session-save=redis --session-save-redis-host=127.0.0.1 --session-save-redis-log-level=3 --session-save-redis-db=2

This will show if successful:

You saved the new configuration.

Session Cache manually set #

The file /app/etc/env.php can be manually edited and the following code added to Enable Redis Session Storage:

...
'session' =>
    array (
        'save' => 'redis',
        'redis' =>
        array (
            'host' => '127.0.0.1',
            'port' => '6379',
            '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'
        )
    ),
...

Where :

  • 127.0.0.1 => Replace with your Hosting’s Redis IP
  • 6379 => Replace with your Hosting’s Redis Port

Full Page Cache #

In the file located at /app/etc/env.php Full Page Cache can be enabled for your Magento 2 store using below env file as model.

...
    'cache' => [
        'frontend' => [
            'default' => [
                'backend' => 'Cm_Cache_Backend_Redis',
                'backend_options' => [
                    'server' => '127.0.0.1',
                    'database' => '0',
                    'port' => '6379'
                ]
            ],
            'page_cache' => [
                'backend' => 'Cm_Cache_Backend_Redis',
                'backend_options' => [
                    'server' => '127.0.0.1',
                    'port' => '6379',
                    'database' => '1',
                    'compress_data' => '0'
                ]
            ]
        ]
    ],
    'cache_types' => [
        'config' => 1,
        'layout' => 1,
        'block_html' => 0,
        'collections' => 1,
        'reflection' => 1,
        'db_ddl' => 1,
        'compiled_config' => 1,
        'eav' => 1,
        'customer_notification' => 1,
        'config_integration' => 1,
        'config_integration_api' => 1,
        'full_page' => 1,
        'config_webservice' => 1,
        'translate' => 1,
        'vertex' => 1
    ],
...

Where:

  • 127.0.0.1 => Replace with your Hosting’s Redis IP
  • 6379 => Replace with your Hosting’s Redis Port
  • full_page => 1 - Enabled Full Page Caching

Need help with Magento 2 Redis ?