Home >Database >Redis >What is the difference between redis' rdb and aof?

What is the difference between redis' rdb and aof?

青灯夜游
青灯夜游Original
2019-06-17 14:14:5310384browse

aof, rdb are two redis persistence mechanisms. Used for redis recovery after crash. So what's the difference between them? The following article will introduce it to you, I hope it will be helpful to you.

What is the difference between redis' rdb and aof?

The difference between persistent RDB and AOF

RDB persistence refers to the specified time interval The snapshot of the data set in the memory is written to the disk. The actual operation process is to fork a sub-process and first write the data set to a temporary file. After the writing is successful, the previous file is replaced and stored using binary compression.

RDB persistently saves all key-value pairs in the key space (including data in expired dictionaries) and saves them in binary form, which conforms to the RDB file specification and will be processed differently according to different data types.

AOF persistence records every write and delete operation processed by the server in the form of a log. Query operations are not recorded, but are recorded in text. You can open the file to see detailed operation records.

AOF persistently saves all write commands executed by the redis server to record the database status. The commands are stored in the aof_buf buffer before writing.

The advantages and disadvantages of persistent RDB and AOF:

What are the advantages of RDB?

1). Once this method is adopted, your entire Redis database will only contain one file, which is perfect for file backup. For example, you may plan to archive the last 24 hours of data every hour, and also archive the last 30 days of data every day. Through such a backup strategy, once a catastrophic failure occurs in the system, we can restore it very easily.

2), RDB is a very good choice for disaster recovery. Because we can easily compress a single file and then transfer it to other storage media.

3), maximize performance. For the Redis service process, when it starts persistence, the only thing it needs to do is to fork out the child process, and then the child process will complete the persistence work. This can greatly avoid the service process performing IO operations.

4). Compared with the AOF mechanism, if the data set is large, RDB startup efficiency will be higher.

What are the disadvantages of RDB?

1). If you want to ensure high availability of data, that is, avoid data loss to the greatest extent, then RDB will not be a good choice. Because once the system crashes before scheduled persistence, the data that has not had time to be written to the disk will be lost.

2). Since RDB assists in data persistence through fork child processes, if the data set is large, it may cause the entire server to stop serving for hundreds of milliseconds, or even 1 second. bell.

What are the advantages of AOF?

1). This mechanism can bring higher data security, that is, data persistence. Redis provides three synchronization strategies, namely synchronization every second, synchronization every modification and no synchronization. In fact, every second synchronization is also completed asynchronously, and its efficiency is also very high. The only difference is that once the system goes down, the data modified within this second will be lost. Every time a modification is synchronized, we can think of it as synchronous persistence, that is, every data change that occurs will be immediately recorded to the disk. Predictably, this approach is the least efficient. As for no synchronization, no need to say more, I think everyone can understand it correctly.

2) Since this mechanism uses the append mode for writing log files, even if there is a downtime during the writing process, the existing content in the log file will not be destroyed. However, if we only write half of the data in this operation and a system crash occurs, don't worry. Before Redis starts next time, we can use the redis-check-aof tool to help us solve the data consistency problem.

3). If the log is too large, Redis can automatically enable the rewrite mechanism. That is, Redis continuously writes modified data to the old disk file in append mode. At the same time, Redis also creates a new file to record which modification commands were executed during this period. Therefore, data security can be better ensured when performing rewrite switching.

4), AOF contains a log file with a clear and easy-to-understand format for recording all modification operations. In fact, we can also complete data reconstruction through this file.

What are the disadvantages of AOF?

1). For the same number of data sets, AOF files are usually larger than RDB files. RDB is faster than AOF when restoring large data sets.

2). Depending on the synchronization strategy, AOF is often slower than RDB in terms of operating efficiency. In short, the efficiency of the synchronization strategy per second is relatively high, and the efficiency of the synchronization disabling strategy is as efficient as RDB.

The criterion for choosing between the two is to see whether the system is willing to sacrifice some performance in exchange for higher cache consistency (aof), or whether it is willing to not enable backup in exchange for higher performance when write operations are frequent, and wait for manual operation When saving, make a backup (rdb). RDB has a more eventually consistent meaning. However, the production environment is actually more of a combination of the two.

The above is the detailed content of What is the difference between redis' rdb and aof?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn