


There are two persistence methods in Redis. Why are two persistence methods needed?
There are two kinds of persistence (AOF and RDB) in Redis. This article will take you to understand these two kinds of persistence, look at their advantages and disadvantages, and introduce why Redis needs two kinds of persistence. Persistence, hope it helps everyone!
Two persistence methods of Redis
As we all know, Redis provides two persistence methods: AOF and RDB. Let’s start with Let’s briefly review.
RDB persistence
- RDB persistence, is to save the state of the database at the current point in time to the disk, also known as Snapshot persistence.
- RDB can be triggered manually or executed periodically according to the server configuration.
- The file generated by RDB is a compressed binary file, through which the database can be restored to the state at that point in time.
- Redis provides the foreground RDB persistence command
SAVE
and the background RDB persistence commandBGSAVE
. When executed in the foreground, other Redis commands will be blocked, and when executed in the background , Redis can also continue to process the client's command request. - In the RDB binary file, key-value pair data is saved, using compressed custom encoding with verification. It can be converted into readable through the
od
command. - During master-slave replication, the initialized full replication uses RDB files.
[Related recommendations: Redis video tutorial]
AOF persistence
- AOF persistence , the full name is
Appen Only File
, which means the appended persistence method, in which write commands are saved instead of data. - The AOF persistence process is divided into three steps: command appending, file writing, and file synchronization.
- Command appending: Every time the Redis server executes a write command, it will append the write command to the end of the
aof_buf
buffer in the server status in the AOF protocol format. - File writing: In Redis, before each event loop ends, the
flushAppendOnlyFile
function is called to write the contents of theaof_buf
buffer to the AOF file. - File synchronization: Synchronization
sync
refers to whether the file is directly synchronized to the disk when it is written to the operating system buffer. Through configuration, you can choose three synchronization methods: immediate synchronization, synchronization every second, and no active synchronization but controlled by the operating system. About file I/O buffering: https://www.litreily.top/2018/10/25/io-cache/ - Redis gives priority to using AOF files to recover data.
- Because AOF files store commands and are not compressed, their size is larger than RDB files.
- AOF files can be rewritten regularly using
BGREWRITEAOF
to reduce duplicate commands, expired commands, merged commands, etc. - AOF files support background rewriting, which is implemented in the form of
fork
sub-process. The child process has a copy of the data of the server process, ensuring data security without using locks. In addition, AOF is used to rewrite the buffer to solve data inconsistency.
The advantages and disadvantages of the two kinds of persistence
The advantages of RDB
The file size is small and suitable for copying for cold backup
Compared with AOF, the backup and recovery speed is faster
Disadvantages of RDB
lost a lot of data
fork the child process to do
BGSAVE
, which consumes a certain amount of memory resources
Advantages of AOF
Less data loss
Added write buffer, No need for addressing, fast
append-only, no need for disk addressing, high efficiency
Disadvantages of AOF
The file size is large
AOF needs to write
aof_buf
every time and open AOF After persistence, QPS will be slightly reduced
Why does Redis need two kinds of persistence?
After the above review, we can see that there are obvious differences between RDB and AOF persistence.
Stored content: RDB stores data at a certain point in time; AOF stores executed write commands.
File size: RDB files are smaller; AOF files are larger.
Writing method: RDB can use the foreground/background writing method; AOF uses the method of storing the command in the buffer every time a write command is executed, and can be rewritten regularly.
Data loss: RDB loses all data between the crash and the last RDB synchronization; AOF does not lose or loses 1s or more according to the refresh method configured in the I/O buffer. A few seconds of data.
Based on these comparisons, we can see thatRDB persistence is more suitable for saving data at a point in time, and copying it to other places during master-slave replication or full data off-site disaster recovery , and AOF persistence has less data loss, so it is more suitable as a local backup and as a fault recovery when Reids hangs up and restarts. This is my understanding of why Redis requires two persistence methods. For more programming-related knowledge, please visit:
Introduction to ProgrammingThe above is the detailed content of There are two persistence methods in Redis. Why are two persistence methods needed?. For more information, please follow other related articles on the PHP Chinese website!

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.

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


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

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

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

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

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

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment
