Loading...

Difference between the Varnish and Redis cache in Magento performance?

Pravin Prajapati  ·   15 Jun 2023
difference between the Varnish and Redis cache in Magento performance?
service-banner

Introduction

Caching is a helpful technique for storing frequently accessed data and serving it quickly, but selecting the right solution can be overwhelming due to the numerous options available. Enter Varnish and Radish, two popular tools often mentioned in the same breath, serving distinct purposes. Today, we'll dissect what sets them apart and help you discover which champion deserves a place in your web development arsenal.

In Magento Cache Management, both Redis and Varnish are used to improve your website's performance and scalability. Let's check together their areas of improvement in the Magento website performance.

 

So, Which One Do You Choose?

As with most things in tech, the answer is: "It depends!" Varnish thrives when your primary goal is speeding up web page delivery, especially for high-traffic websites with static content. Radish takes the stage when you need a flexible, language-agnostic solution for storing diverse data structures and ensuring lightning-fast retrieval.

In the following sections of this blog, we'll delve deeper into both Varnish and Radish, exploring their configurations, use cases, and potential benefits for your projects. Stay tuned to discover which caching champion is key to unleashing your website's potential!

Redis

Radish is an open-source in-memory data store. It is excellent at smoothly storing and retrieving various data types. Radish is made to handle a wide range of data types, including simple strings, lists, complicated objects, and even specialised data like geolocation information. It is a very flexible and easily accessible data repository, allowing for smooth interaction with applications written in various computer languages.

Page Caching

Page Caching: Redis can be the backend cache for full-page caching, caching the generated HTML output of Magento blocks. Redis enables fast retrieval and decreases the load on the web server. Configure Redis in the Magento 2 env file to allow it for page caching.

Redis Configuration for Magento website optimization till version 2.3.4

php

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

Redis Configuration for Magento website optimization from version 2.3.5

'cache' => [
   'frontend' => [
       'page_cache' => [
           'backend' => '\\Magento\\Framework\\Cache\\Backend\\Redis',
           'backend_options' => [
               'server' => '127.0.0.1',
               'port' => '6379',
               'database' => '1',
               'compress_data' => '0'
           ]
       ]
   ]    
],

This configuration makes sure that Magento utilizes Redis as the backend cache for page caching, allowing for faster retrieval of cached HTML output and reducing the load on the web server. By leveraging Redis for page caching, Magento can significantly improve the performance and responsiveness of the website, especially for frequently accessed pages.

Session Storage

Session Storage: Using Redis as a session storage backend, you can experience faster read and write operations for session data. Redis helps optimize performance and provides a seamless user experience. Configure the Magento 2 env file to leverage Redis for session storage.


Redis Configuration

php

'session' =>[
   'save' => 'redis',
   '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'
   ]
],

When you configure Magento to use Redis for session storage, you can expect improved performance and scalability, resulting in a more seamless user experience, particularly in high-traffic scenarios.

Cache Storage

Cache Storage: Magento 2 utilizes a cache system to store different cache types. You can use Redis as the cache storage backend to improve the performance of cache read and write operations. Configure the Magento 2 env file configuration to enable Redis for cache storage.

Redis Configuration for Magento website optimization till version 2.3.4

php

'cache' => [
   'frontend' => [
       'default' => [
           'backend' => 'Cm_Cache_Backend_Redis',
           'backend_options' => [
               'server' => '127.0.0.1',
               'port' => '6379',
               'database' => '1',
               'compress_data' => '0'
           ]
       ]
   ]
],

For Magento version 2.3.5 and later, the configuration remains quite similar:

'cache' => [
   'frontend' => [
       'default' => [
           'backend' => '\\Magento\\Framework\\Cache\\Backend\\Redis',
           'backend_options' => [
               'server' => '127.0.0.1',
               'port' => '6379',
               'database' => '1',
               'compress_data' => '0'
           ]
       ]
   ]    
],
 

To verify that Magento and Redis cache are working together, you can use the redis-cli monitor command. You can watch the cache operations that Magento starts by using this command, which will continuously monitor all commands sent to the Redis server.

Varnish cache

Varnish is an HTTP accelerator and reverses the proxy cache to manage incoming HTTP requests on port 80. Varnish cache is primarily used for full-page caching in Magento. Varnish stores frequently accessed content in RAM, ready to be delivered instantly.

When a user requests a page, Varnish checks if it has a cached copy of the page; if it does, it serves the cached version directly without involving Magento or the web server. Varnish significantly reduces the server load and improves the website's performance and scalability.

Full-Page Caching

Varnish can cache the entire HTML output of Magento 2 pages at the network layer, serving cached blocked directly to successive users. Varnish remarkably decreases the load on the web server ( NGINX or APHACHE ) and enhances response times. Set up Varnish in Magento 2 by editing the store settings and setting the Varnish server details at Stores > Configuration > Advanced > System > Full Page Cache.

To deploy the custom Magento VCL, use the command provided below. 

cmd

sudo bin/magento varnish:vcl:generate --export-version=6 | sudo tee /etc/varnish/default.vcl > /dev/null

This command will generate the VCL file, and We will create the output. To /etc/varnish/default.vcl

After deploying the custom VCL file, restart the Varnish service to apply the changes. You can do this using the following command:

sudo service varnish restart
sudo bin/magento cache:flush

By following these steps, you'll have successfully configured Magento 2 to use Varnish as the full-page cache and deployed a custom VCL file tailored for Magento's requirements. This setup will help improve the performance of your Magento store by caching HTML output at the network layer and reducing the load on the web server.

Edge Side Includes (ESI)

Magento uses ESI to isolate navigation blocks from other dynamic content blocks within a cached page. In Magento 2, you can keep specific blocks as "hole-punched," supplying dynamic rendering within cached pages. Varnish empowers a blend of static and dynamic content, enhancing personalization, minimizing cache invalidation needs, and improving Magento website performance. Varnish currently does not support ESI Blocks over HTTPS and automatically switches to HTTP. ESI works when conditions like Varnish are enabled in Magento and XML layout block elements are added with the TTL attribute.

An example is below

xml

<referenceContainer name="content">
   <block class="Magento\Framework\View\Element\Template" template="Elightwalk_Extension::esi.phtml" ttl="30" />
</referenceContainer>

Varnish cache in Magento, you can achieve faster response times, reduce server load, and provide a better user experience by delivering cached content to users instead of processing each request from scratch.

Difference Between Varnish and Redis cache

Varnish is an HTTP accelerator and caching reverse proxy server that caches entire web pages to improve website performance, especially for static content. It's great for reducing server load and enhancing user experience, but may face challenges with dynamic content due to manual cache management.

Redis is an in-memory data structure. It is primarily used as an object cache backend. It offers granular caching, supporting various data types and providing better control over cache invalidation through tag-based strategies. Redis is versatile and efficient for caching dynamic content in web applications.

Difference Between Varnish and Redis cache

This table helps us understand the working style and difference between Varnish and Redis.

Conclusion

Using Redis Cache and Varnish Cache jointly can enhance Magento website performance. Redis manages application-level caching (page caching, session storage, and cache storage), and Varnish serves as a powerful reverse caching proxy for Full-Page Caching and Edge Side Includes.

 You can contact us if you want Magento website performance improvement and any query related to Magento website optimization and Magento website caching.

 

Contact us:+91 8128405131

Email send us at hello@elightwalk.com

Pravin Prajapati
Full Stack Developer

Expert in frontend and backend development, combining creativity with sharp technical knowledge. Passionate about keeping up with industry trends, he implements cutting-edge technologies, showcasing strong problem-solving skills and attention to detail in crafting innovative solutions.

Most Visited Blog

Unlock The Power Of Plugins In Magento 2: A Comprehensive Guide

Get started on utilizing Magento 2 plugins with our comprehensive tutorial. Master the art of plugin building and integration to improve the functionality and customization of your e-commerce shop.

How to Clear Shopping Cart in Magento 2

Discover a quick and simple approach to emptying your Magento 2 shopping basket. Streamline your shopping experience by learning how to easily delete things and refresh your basket.

How to create a module in Magento 2: Sample Module A Step-by-Step Guide

Embark on Magento 2 journey with confidence! Our step-by-step tutorial module development. Learn how to create a Module to harness the potential of Magento 2 customization for personalized and efficient e-commerce experience.