Home> Database> Redis> body text

When to use redis cache

(*-*)浩
Release: 2019-11-22 11:54:37
Original
3192 people have browsed it

When to use redis cache

What problem does Redis solve?

The contradiction between large-scale reading and writing of data and database reading and writing capabilitiesLooking back at the development history of CPU cache, in order to solve the huge difference between the computing speed of the CPU and the reading speed of the memory, the CPU uses cache to store instructions and data.The cache has evolved from the initial motherboard cache to the current level 3 cache, and the cache size has also continued to grow. Data from the Internet shows that the CPU cache hit rate is approximately 80%.

By analogy to the contradiction between CPU and memory during the development of computers, we can see that the contradiction between large-scale data reading and writing in large websites and database reading and writing capabilities is similar to this contradiction. We can also build a storage area between the database and the application that is faster than the database - the cache.

Everyone is most familiar with Redis being used as a cache. We know that the original intention of the author of Redis in designing Redis was because when he used a relational database, no matter how optimized, the performance could not meet his expectations, so he I hand-wrote an in-memory database.

In the case of caching, we have the following application scenarios:

1. Hotspot dataFor example, we can save the SQL query results in In the memory, pictures frequently viewed by users can also be saved in the memory.

2. Ranking listBased on the zset data structure provided by Redis, we can implement the ranking list more conveniently. For information on implementing the ranking list, please refer to Ranking List Algorithm Design and Implementation Comparison. In the case of small-scale data, there is not much problem in using Mysql to implement rankings, but once the amount of data increases, continuous Mysql reading and writing will become a bottleneck.

3. Counter/speed limiter
One of the application scenarios of counters is to count the number of likes of users, and one of the application scenarios of speed limiters is to restrict access to user IPs. frequency. The reason why Redis can be used for counters is that Redis is single-threaded. Every time, the previous instruction must be executed before the next instruction is executed. This ensures that multiple instructions will not be executed at the same time; that is, no concurrency problems will occur. The principle of speed limiter is similar.

4. Mutual friends
Using the intersection operation sinter of the Set data structure provided by Redis can more conveniently find the intersection of two Set collections; while using the join table query of the database There will be a lot of performance overhead because large websites have a huge number of users.

5. Simple message queue
The publish/subscribe provided by Redis is an extremely simple messaging system. It does not provide the function of dividing it into different topics and partitions and providing persistence like Kafka. Redis's message queue is used in scenarios that do not require high reliability.

6. Session sharing
Session is used to record who the user is. When an application is deployed using a cluster, we need a place to manage sessions uniformly. We can use a database to record sessions. However, the performance requirements for the database are higher at this time. In addition, sessions are usually time-sensitive. For this logic, we It needs to be implemented in the code, but if you use Redis to share the session, then there will be no such problem.

Many of the above application scenarios can also use other technologies to solve the problem, buttechnology like Redis will be a better solution under certain resource constraints.

For more Redis-related technical articles, please visit theRedis database usage tutorialcolumn to learn!

The above is the detailed content of When to use redis cache. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!