


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!

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

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

How to clear Redis data: Use the FLUSHALL command to clear all key values. Use the FLUSHDB command to clear the key value of the currently selected database. Use SELECT to switch databases, and then use FLUSHDB to clear multiple databases. Use the DEL command to delete a specific key. Use the redis-cli tool to clear the data.

To read a queue from Redis, you need to get the queue name, read the elements using the LPOP command, and process the empty queue. The specific steps are as follows: Get the queue name: name it with the prefix of "queue:" such as "queue:my-queue". Use the LPOP command: Eject the element from the head of the queue and return its value, such as LPOP queue:my-queue. Processing empty queues: If the queue is empty, LPOP returns nil, and you can check whether the queue exists before reading the element.

On CentOS systems, you can limit the execution time of Lua scripts by modifying Redis configuration files or using Redis commands to prevent malicious scripts from consuming too much resources. Method 1: Modify the Redis configuration file and locate the Redis configuration file: The Redis configuration file is usually located in /etc/redis/redis.conf. Edit configuration file: Open the configuration file using a text editor (such as vi or nano): sudovi/etc/redis/redis.conf Set the Lua script execution time limit: Add or modify the following lines in the configuration file to set the maximum execution time of the Lua script (unit: milliseconds)

Use the Redis command line tool (redis-cli) to manage and operate Redis through the following steps: Connect to the server, specify the address and port. Send commands to the server using the command name and parameters. Use the HELP command to view help information for a specific command. Use the QUIT command to exit the command line tool.

Redis counter is a mechanism that uses Redis key-value pair storage to implement counting operations, including the following steps: creating counter keys, increasing counts, decreasing counts, resetting counts, and obtaining counts. The advantages of Redis counters include fast speed, high concurrency, durability and simplicity and ease of use. It can be used in scenarios such as user access counting, real-time metric tracking, game scores and rankings, and order processing counting.

There are two types of Redis data expiration strategies: periodic deletion: periodic scan to delete the expired key, which can be set through expired-time-cap-remove-count and expired-time-cap-remove-delay parameters. Lazy Deletion: Check for deletion expired keys only when keys are read or written. They can be set through lazyfree-lazy-eviction, lazyfree-lazy-expire, lazyfree-lazy-user-del parameters.

In Debian systems, readdir system calls are used to read directory contents. If its performance is not good, try the following optimization strategy: Simplify the number of directory files: Split large directories into multiple small directories as much as possible, reducing the number of items processed per readdir call. Enable directory content caching: build a cache mechanism, update the cache regularly or when directory content changes, and reduce frequent calls to readdir. Memory caches (such as Memcached or Redis) or local caches (such as files or databases) can be considered. Adopt efficient data structure: If you implement directory traversal by yourself, select more efficient data structures (such as hash tables instead of linear search) to store and access directory information
