All Redis data structures support setting expiration time. When the time expires, Redis automatically deletes the data structure. You can imagine that there is a god of death inside Redis, always watching all the keys with expiration time set, and harvesting them as soon as their lifespan is up.
You can consider from the perspective of Death whether it cannot be processed because too many keys expire at the same time. At the same time, because Redis is single-threaded, the harvesting time will also occupy the processing time of the thread. If the harvesting is too busy, it will cause lags in online read and write instructions.
Expired key collection
redis will put each key with an expiration time set into an independent dictionary. This dictionary will be traversed regularly to delete expired keys. In addition to scheduled traversal, it also uses a lazy strategy to delete expired keys. The so-called lazy strategy means that when the client accesses the key, redis checks the expiration time of the key and deletes it immediately if it expires. Scheduled deletion is a centralized process, while lazy deletion is a sporadic process.
Timing scan strategy
Redis will perform expiration scans ten times per second by default. Expiration scans will not traverse all keys in the expiration dictionary, but use a simple greedy strategy.
Randomly select 20 keys from the expired dictionary;
Delete the expired keys among these 20 keys;
If the expired key ratio exceeds 1/4, then Repeat step 1;
At the same time, in order to ensure that expired scanning does not cause excessive cycles and cause thread stuck, the algorithm also increases the upper limit of scanning time, which will not exceed 25ms by default.
Imagine that all the keys in a large Redis instance expire at the same time, what will happen?
There is no doubt that Redis will continue to scan the expired dictionary (cycle multiple times), and will not stop until the expired keys in the expired dictionary become sparse (the number of cycles drops significantly). This will lead to obvious lags in online read and write requests. Another reason for lagging is that the memory manager needs to frequently reclaim memory pages, which will also cause a certain amount of CPU consumption.
When the client request arrives, if the server happens to enter the expired scan state, the client's request will wait for at least 25ms before processing. If the client sets the timeout period relatively short;
If the timeout is set to 10ms, a large number of connections will be closed due to timeout, resulting in a large number of exceptions on the business end. And at this time, you cannot see the slow query record from the slowlog of Redis, because slow query refers to the slow logical processing process and does not include waiting time.
The above is the detailed content of What are the redis expiration strategies?. For more information, please follow other related articles on the PHP Chinese website!

RedisofferssuperiorspeedfordataoperationsbutrequiressignificantRAMandinvolvestrade-offsindatapersistenceandscalability.1)Itsin-memorynatureprovidesultra-fastread/writeoperations,idealforreal-timeapplications.2)However,largedatasetsmaynecessitatedatae

Redisoutperformstraditionaldatabasesinspeedforread/writeoperationsduetoitsin-memorynature,whiletraditionaldatabasesexcelincomplexqueriesanddataintegrity.1)Redisisidealforreal-timeanalyticsandcaching,offeringphenomenalperformance.2)Traditionaldatabase

UseRedisinsteadofatraditionaldatabasewhenyourapplicationrequiresspeedandreal-timedataprocessing,suchasforcaching,sessionmanagement,orreal-timeanalytics.Redisexcelsin:1)Caching,reducingloadonprimarydatabases;2)Sessionmanagement,simplifyingdatahandling

Redis goes beyond SQL databases because of its high performance and flexibility. 1) Redis achieves extremely fast read and write speed through memory storage. 2) It supports a variety of data structures, such as lists and collections, suitable for complex data processing. 3) Single-threaded model simplifies development, but high concurrency may become a bottleneck.

Redis is superior to traditional databases in high concurrency and low latency scenarios, but is not suitable for complex queries and transaction processing. 1.Redis uses memory storage, fast read and write speed, suitable for high concurrency and low latency requirements. 2. Traditional databases are based on disk, support complex queries and transaction processing, and have strong data consistency and persistence. 3. Redis is suitable as a supplement or substitute for traditional databases, but it needs to be selected according to specific business needs.

Redisisahigh-performancein-memorydatastructurestorethatexcelsinspeedandversatility.1)Itsupportsvariousdatastructureslikestrings,lists,andsets.2)Redisisanin-memorydatabasewithpersistenceoptions,ensuringfastperformanceanddatasafety.3)Itoffersatomicoper

Redis is primarily a database, but it is more than just a database. 1. As a database, Redis supports persistence and is suitable for high-performance needs. 2. As a cache, Redis improves application response speed. 3. As a message broker, Redis supports publish-subscribe mode, suitable for real-time communication.

Redisisamultifacetedtoolthatservesasadatabase,server,andmore.Itfunctionsasanin-memorydatastructurestore,supportsvariousdatastructures,andcanbeusedasacache,messagebroker,sessionstorage,andfordistributedlocking.


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

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 English version
Recommended: Win version, supports code prompts!

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Dreamweaver CS6
Visual web development tools
