


Three methods of Redis deletion strategy and analysis of eviction algorithm examples
1. Preface
Before the article begins, let me ask you a question: When we use the command: expire key second
Set the expiration time for a key, once the expiration time is up, Is the expired data
corresponding to this key really deleted immediately by the server? The answer is that it will not be deleted immediately. Knowing this answer, let's take a look at how expired data is handled in Redis.
2. Data characteristics in Redis
Redis is a memory-level database. All data is stored in the memory. The data in the memory can obtain its status through TTL instructions. There are three states:
Instruction result | State |
---|---|
XX | Time-sensitive data |
-1 | Permanently valid data |
-2 | has been Expired data or deleted data or undefined data |
3. Time-sensitive data storage structure
When we use instructions to set expired data, the address corresponding to the data will be placed in the expires space, and the storage method is hash. , the stored value is the expiration time.
4. Data deletion strategy
Data deletion strategy goal:
Find a balance between memory usage and CPU usage. Failure to consider one or the other will result in a decline in overall redis performance. It may even cause server downtime or memory leaks
1. Scheduled deletion
Create a timer. When the key is set to have an expiration time and the expiration time is reached, the timer will be used. The server task immediately executes the deletion operation on the key
Advantages:Save memory, delete it when the time comes, and quickly release unnecessary memory usage
Disadvantages: The CPU is under great pressure. No matter how high the CPU load is at this time, the CPU is occupied, which will affect the redis server response time and instruction throughput
2. Lazy deletion
No processing will be done if the data reaches the expiration time. The next time the data is accessed, the
expireIfNeeded()
function will be called to determine whether the data has expired: If it has not expired, return the data, find it has expired, delete it, and return it does not existAdvantages: Save CPU performance, delete only when you find it must be deleted
Disadvantages: The memory pressure is very high, and it appears Data that occupies memory for a long time
3. Periodic deletion
Process analysis :
When the Redis server starts and initializes, read the value of configuration server.hz, the default is 10
and then every second Execute the
serverCron()
method 10 times, which is used to detect the serverserverCron()
method will calldatabasesCron( )
method, this method is used to traverse the database. Redis has 16 databases by default, starting from the first databasedatabasesCron()
method TheactiveExpireCycle()
method will be called again, which will detect eachexpires[*]
one by one, executing 250ms/server.hz each time; for a certainexpires [*]
During detection, W keys are randomly selected for detectionIf the key timeout is detected, the key will be deleted; if the number of keys deleted in one round > W25% , loop the process; if the number of keys deleted in one round is ≤W25%, check the next
expires[*]
, 0-15 loop. Where W value = ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP attribute valueIf the execution time of activeExpireCycle() expires, the execution will continue from current_db next time
Parameters current_db is used to record which expires[*] activeExpireCycle() enters to execute
##Summary:
cycle Consistently poll the timely data in the redis database, adopt a random extraction strategy, and use the proportion of expired data to control the frequency of deletion
- The memory pressure is not very high, and the memory will be occupied for a long time Cold data will be continuously cleaned
Save memory, no Occupy | Occupies CPU resources regardless of time period, high frequency | Exchange time for space | |
---|---|---|---|
Severe memory usage | Delayed execution, high CPU utilization | Trade space for time | |
Regular random cleaning of memory | Spend a fixed amount of CPU resources per second to maintain memory | Random and focused checks |
volatile-lru | Select the least recently used data to eliminate |
---|---|
volatile-lfu | Select the least recently used data to eliminate |
volatile-ttl | Select the data that is about to expire |
volatile-random | Randomly select data elimination |
Detect the entire database data (all data sets server.db[i].dict
)
allkeys-lru | Select the least recently used data to eliminate |
---|---|
allkeys-lfu | Select the least recently used data to eliminate |
allkeys-random | Select any data to eliminate |
Give up data eviction:
no-enviction | Disable eviction of data (default policy in redis4.0) |
---|
The above is the detailed content of Three methods of Redis deletion strategy and analysis of eviction algorithm examples. For more information, please follow other related articles on the PHP Chinese website!

Redisisanopen-source,in-memorydatastructurestoreusedasadatabase,cache,andmessagebroker,excellinginspeedandversatility.Itiswidelyusedforcaching,real-timeanalytics,sessionmanagement,andleaderboardsduetoitssupportforvariousdatastructuresandfastdataacces

Redis is an open source memory data structure storage used as a database, cache and message broker, suitable for scenarios where fast response and high concurrency are required. 1.Redis uses memory to store data and provides microsecond read and write speed. 2. It supports a variety of data structures, such as strings, lists, collections, etc. 3. Redis realizes data persistence through RDB and AOF mechanisms. 4. Use single-threaded model and multiplexing technology to handle requests efficiently. 5. Performance optimization strategies include LRU algorithm and cluster mode.

Redis's functions mainly include cache, session management and other functions: 1) The cache function stores data through memory to improve reading speed, and is suitable for high-frequency access scenarios such as e-commerce websites; 2) The session management function shares session data in a distributed system and automatically cleans it through an expiration time mechanism; 3) Other functions such as publish-subscribe mode, distributed locks and counters, suitable for real-time message push and multi-threaded systems and other scenarios.

Redis's core functions include memory storage and persistence mechanisms. 1) Memory storage provides extremely fast read and write speeds, suitable for high-performance applications. 2) Persistence ensures that data is not lost through RDB and AOF, and the choice is based on application needs.

Redis'sServer-SideOperationsofferFunctionsandTriggersforexecutingcomplexoperationsontheserver.1)FunctionsallowcustomoperationsinLua,JavaScript,orRedis'sscriptinglanguage,enhancingscalabilityandmaintenance.2)Triggersenableautomaticfunctionexecutionone

Redisisbothadatabaseandaserver.1)Asadatabase,itusesin-memorystorageforfastaccess,idealforreal-timeapplicationsandcaching.2)Asaserver,itsupportspub/submessagingandLuascriptingforreal-timecommunicationandserver-sideoperations.

Redis is a NoSQL database that provides high performance and flexibility. 1) Store data through key-value pairs, suitable for processing large-scale data and high concurrency. 2) Memory storage and single-threaded models ensure fast read and write and atomicity. 3) Use RDB and AOF mechanisms to persist data, supporting high availability and scale-out.

Redis is a memory data structure storage system, mainly used as a database, cache and message broker. Its core features include single-threaded model, I/O multiplexing, persistence mechanism, replication and clustering functions. Redis is commonly used in practical applications for caching, session storage, and message queues. It can significantly improve its performance by selecting the right data structure, using pipelines and transactions, and monitoring and tuning.


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

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

Atom editor mac version download
The most popular open source editor

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

SublimeText3 Linux new version
SublimeText3 Linux latest version

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment
