search
HomeDatabaseRedisThree 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 secondSet 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

Three methods of Redis deletion strategy and analysis of eviction algorithm examples

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

Three methods of Redis deletion strategy and analysis of eviction algorithm examples

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 exist

  • Advantages: 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

Three methods of Redis deletion strategy and analysis of eviction algorithm examples

3. Periodic deletion

Three methods of Redis deletion strategy and analysis of eviction algorithm examples

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 server

  • serverCron() method will call databasesCron( ) method, this method is used to traverse the database. Redis has 16 databases by default, starting from the first database

  • databasesCron() method The activeExpireCycle() method will be called again, which will detect each expires[*] one by one, executing 250ms/server.hz ​​each time; for a certain expires [*]During detection, W keys are randomly selected for detection

  • If 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 value

  • If 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

Three methods of Redis deletion strategy and analysis of eviction algorithm examples

  • ##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

5. Comparison of deletion strategies

Regular deletionSave memory, no OccupyOccupies CPU resources regardless of time period, high frequencyExchange time for spaceLazy deletionSevere memory usage Delayed execution, high CPU utilizationTrade space for timeRegular deletionRegular random cleaning of memory Spend a fixed amount of CPU resources per second to maintain memory Random and focused checks

6. Eviction algorithm

1. Concept introduction

When new data enters redis, what should I do if there is insufficient memory? Redis uses memory to store data. Before executing each command, it will call freeMemoryIfNeeded() to check whether the memory is sufficient. If the memory does not meet the minimum storage requirements for newly added data, redis will temporarily delete some data to clear storage space for the current instruction. The strategy for cleaning data is called the eviction algorithm.

Note: The process of evicting data is not 100% able to clear out enough usable memory space. If it is unsuccessful, it will be executed repeatedly. After trying all data, if the memory cleanup requirements cannot be met, an error message will appear.

Three methods of Redis deletion strategy and analysis of eviction algorithm examples

2. Eight configurations

Detect volatile data (Data sets that may expire server.db[i].expires )

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!

Statement
This article is reproduced at:亿速云. If there is any infringement, please contact admin@php.cn delete
Redis: Unveiling Its Purpose and Key ApplicationsRedis: Unveiling Its Purpose and Key ApplicationsMay 03, 2025 am 12:11 AM

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

Redis: A Guide to Key-Value Data StoresRedis: A Guide to Key-Value Data StoresMay 02, 2025 am 12:10 AM

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: Caching, Session Management, and MoreRedis: Caching, Session Management, and MoreMay 01, 2025 am 12:03 AM

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: Exploring Its Core Functionality and BenefitsRedis: Exploring Its Core Functionality and BenefitsApr 30, 2025 am 12:22 AM

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's Server-Side Operations: What It OffersRedis's Server-Side Operations: What It OffersApr 29, 2025 am 12:21 AM

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

Redis: Database or Server? Demystifying the RoleRedis: Database or Server? Demystifying the RoleApr 28, 2025 am 12:06 AM

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

Redis: The Advantages of a NoSQL ApproachRedis: The Advantages of a NoSQL ApproachApr 27, 2025 am 12:09 AM

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: Understanding Its Architecture and PurposeRedis: Understanding Its Architecture and PurposeApr 26, 2025 am 12:11 AM

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.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

MantisBT

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 new version

SublimeText3 Linux latest version

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment