One of the most important stages in software design engineering is to understand the problem and establish a design scope. In many cases, when it comes to the back-of-the-envelope estimation, redundant requests towards the databases and/or the resources represent a tricky challenge that must be carefully taken into consideration if the product in question might expect millions of DAU (daily active users).
Relational Databases such as MySQL and PostgreSQL are very good in terms of performance, but they are in this case hard to scale, especially when you have to partition them across multiple nodes and support at the same time a huge amount of concurrent requests.
Caching staff is a highly efficient solution. Redis (REmote DIctionary Server) doesn’t only do cache, but also acts as a database, and a message broker. For example, Redis as a Database, you can design a Twitter clone using ¨PHP and Redis (for more information visit this page). You can also Design a distributed caching system using Redis in this case you can easily insert Redis as a front-end database in between the application and MySQL, Redis provides a mechanism to cache your queries to RAM and reduce MySQL requests. Finally, Redis as a Message Broker, when you have a multi-service application, each microservice might need to communicate to the others through two opposite mechanisms : Message queues and Event streams. (Read more)
Who is using Redis
Many big companies like Twitter, GitHub, Snapchat, Pinterest, StackOverflow are using Redis.