What do redis cache avalanche, cache breakdown, and cache penetration mean?
What is redis cache?
Redis cache is an open source log-type Key-Value database written in ANSIC language, supports network, can be memory-based and persistent, and provides APIs in multiple languages.
What is the role of redis cache?
The use of Redis cache greatly improves the performance and efficiency of applications, especially in data query. But at the same time, it also brings some problems. Among them, the most critical issue is the consistency of data. Strictly speaking, this problem has no solution. If the consistency requirements of the data are very high, then caching cannot be used.
Another typical problem is cache penetration, cache avalanche and cache breakdown. At present, the industry also has relatively popular solutions. This article is not intended to solve these three problems more perfectly, nor is it intended to subvert popular solutions in the industry. Instead, we will demonstrate these three problem phenomena through actual code operations. The reason for doing this is because it is difficult to have a very vivid concept in the mind just by looking at the academic explanations of these issues. With actual code demonstrations, we can deepen our understanding and understanding of these issues.
Cache penetration
Cache penetration refers to querying data that must not exist in a database. The normal process of using cache is roughly that data query first performs cache query. If the key does not exist or the key has expired, then query the database and put the queried object into the cache. If the database query object is empty, it will not be placed in the cache.
Code flow
1. Pass the parameter into the primary key ID of the object
2. Get the object from the cache based on the key
3. If the object is not empty , return directly
4. If the object is empty, query the database
5. If the object queried from the database is not empty, put it in the cache (set the expiration time) Imagine In this case, what will happen if the parameter passed in is -1? This -1 is an object that definitely does not exist. The database will be queried every time, and every query will be empty, and the cache will not be performed every time. If there is a malicious attack, this vulnerability can be exploited to put pressure on the database or even crush it. Even if UUID is used, it is easy to find a non-existent KEY and carry out attacks.
In my work, the editor will use the method of caching null values, which is step 5 in [Code Process]. If the object queried from the database is empty, it will also be put into the cache, just the set cache The expiration time is shorter, for example, set to 60 seconds.
(Learning video sharing: redis video tutorial)
Cache avalanche
Cache avalanche refers to a certain time Segment, cache centralized expiration.
One of the reasons for the avalanche is that when I write this article, it is almost midnight on Double 12, and there will soon be a wave of panic buying. This wave of products will be put in more intensively. Caching, assuming one hour. Then at one o'clock in the morning, the cache of this batch of products has expired. The access queries for this batch of products all fall on the database, which will generate periodic pressure peaks for the database.
When the editor is working on e-commerce projects, he usually uses different categories of goods and caches them for different periods. Products in the same category, plus a random factor. This can spread the cache expiration time as much as possible. Moreover, the cache time of products in popular categories will be longer and the cache time of products in unpopular categories will be shorter, which can also save the resources of the cache service.
In fact, centralized expiration is not very fatal. The more fatal cache avalanche is when a node of the cache server is down or disconnected from the network. Because the naturally formed cache avalanche must create caches intensively during a certain period of time, then the database can withstand the pressure at that time. At this time, the database can also withstand the pressure. It's nothing more than periodic pressure on the database. The downtime of the cache service node will put unpredictable pressure on the database server, and it is very likely that the database will be overwhelmed in an instant.
Cache breakdown
Cache breakdown refers to a key that is very hot and is constantly carrying large concurrency. Large concurrency focuses on accessing this point. , when the key expires, the continuous large concurrency breaks through the cache and directly requests the database, which is like cutting a hole in a barrier.
When the editor was working on an e-commerce project, this product became a "hot item".
In fact, in most cases, it is difficult for this kind of explosion to cause overwhelming pressure on the database server. There are very few companies that have reached this level. Therefore, the pragmatic editor has made early preparations for the main products so that the cache will never expire. Even if some products become popular by themselves, they can just set them to never expire.
To be simple, the mutex key mutex lock is really not useful.
Learning tutorial sharing: redis database tutorial
The above is the detailed content of What do redis cache avalanche, cache breakdown, and cache penetration mean?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Redis cluster mode deploys Redis instances to multiple servers through sharding, improving scalability and availability. The construction steps are as follows: Create odd Redis instances with different ports; Create 3 sentinel instances, monitor Redis instances and failover; configure sentinel configuration files, add monitoring Redis instance information and failover settings; configure Redis instance configuration files, enable cluster mode and specify the cluster information file path; create nodes.conf file, containing information of each Redis instance; start the cluster, execute the create command to create a cluster and specify the number of replicas; log in to the cluster to execute the CLUSTER INFO command to verify the cluster status; make

Redis uses hash tables to store data and supports data structures such as strings, lists, hash tables, collections and ordered collections. Redis persists data through snapshots (RDB) and append write-only (AOF) mechanisms. Redis uses master-slave replication to improve data availability. Redis uses a single-threaded event loop to handle connections and commands to ensure data atomicity and consistency. Redis sets the expiration time for the key and uses the lazy delete mechanism to delete the expiration key.

Steps to solve the problem that redis-server cannot find: Check the installation to make sure Redis is installed correctly; set the environment variables REDIS_HOST and REDIS_PORT; start the Redis server redis-server; check whether the server is running redis-cli ping.

Redis cluster is a distributed deployment model that allows horizontal expansion of Redis instances, and is implemented through inter-node communication, hash slot division key space, node election, master-slave replication and command redirection: inter-node communication: virtual network communication is realized through cluster bus. Hash slot: divides the key space into hash slots to determine the node responsible for the key. Node election: At least three master nodes are required, and only one active master node is ensured through the election mechanism. Master-slave replication: The master node is responsible for writing requests, and the slave node is responsible for reading requests and data replication. Command redirection: The client connects to the node responsible for the key, and the node redirects incorrect requests. Troubleshooting: fault detection, marking off line and re-

Redis uses five strategies to ensure the uniqueness of keys: 1. Namespace separation; 2. HASH data structure; 3. SET data structure; 4. Special characters of string keys; 5. Lua script verification. The choice of specific strategies depends on data organization, performance, and scalability requirements.

To view all keys in Redis, there are three ways: use the KEYS command to return all keys that match the specified pattern; use the SCAN command to iterate over the keys and return a set of keys; use the INFO command to get the total number of keys.

Redis Ordered Sets (ZSets) are used to store ordered elements and sort by associated scores. The steps to use ZSet include: 1. Create a ZSet; 2. Add a member; 3. Get a member score; 4. Get a ranking; 5. Get a member in the ranking range; 6. Delete a member; 7. Get the number of elements; 8. Get the number of members in the score range.

To view the Redis version number, you can use the following three methods: (1) enter the INFO command, (2) start the server with the --version option, and (3) view the configuration file.
