Home  >  Article  >  Database  >  Redis persistence full version

Redis persistence full version

咔咔
咔咔Original
2020-05-27 11:04:391755browse


Introduction to persistence

RDB

AOF

The difference between RDB and AOF

Persistence application scenarios


For the persistence function, it is actually very simple and not that complicated


Demo environment


##centos7.0

redis4.0

redis storage directory:/usr/local/ redis

redis.conf storage directory:/usr/local/redis/data


##1. Introduction to persistence


All data in redis is stored in memory. If redis crashes, the data will be lost. Redis persistence is to save data on disk. The working mechanism that uses permanent storage media to save data processes and restore the saved data at a specific time is called persistence.


What is saved in the persistence process?


The first snapshot form stores data results and focuses on the data, which is the RDB that will be discussed below


The second type of operation process, the storage operation process, focuses on the data operation process, which is the AOF that will be discussed below


2. RDB


2-1 RDB startup mode -- save command


The following figure is the configuration information of redis.conf. After execution After saving, a dump.rdb file will be generated

Redis persistence full version

Now we set a value and then save it in /usr/local/redis/data There will be a file dump6379.rdb

Redis persistence full version


2-2 How to use RDB save


  • dbfilename dump6379.rdb: Set the RDB file name, the default value is dump.rdb
  • dir: The path to store the rdb or aof file
  • rdbcompression yes: Set whether to compress the data when storing, The default is yes, using lzf compression
  • rdbchecksum yes: Set whether to perform RDB file format verification. This verification process is performed during both writing and reading files


2-3 RDB data recovery


In fact, compared to other relational database recovery, this data recovery basically requires no operation. Just restart it


2-4 RDB -- how the save command works


When you When executing save, instructions from other clients requesting redis will wait until the save instruction is completed. Because the save instruction is executed in a single thread, once the execution time is too long, it will directly cause other users to be unable to store data normally. So this command is abandoned by default. The bgsave introduced below will be used instead


2-5 RDB -- How the bgsave command works


Redis persistence full version

When bgsave is executed in redis Will directly return a Background saving started


At this time we are looking at the log file. The bgsave command is optimized for the save blocking problem

Redis persistence full version


2-5 RDB -- Configuration file auto-start


以下配置是默认配置
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes


Redis persistence full version

save [Time] [Amount of key changes]


That is to say, if 10 key values ​​change in 300 seconds, bgsave will be executed in the background


3. AOF


3-1 AOF concept

AOF files store the process of executing command operations, and data recovery is also restored using the operation process.


3-2 AOF data writing process


Redis persistence full version

Execute a redis command


##The AOF of redis will refresh the command buffer


Then synchronize to the .aof file configured in redis.conf according to a certain method


3-3 AOF writing data Three strategies


    #always: The executed commands will be stored in the AOF file, with zero data error and low performance. It is not recommended to use
  • everysec: Synchronizes the instructions in the buffer to the AOF file every second. It has higher data accuracy and higher performance. It is recommended and is also the default configuration. However, if the system suddenly crashes, the data within 1 second will be lost.
  • no: The operating system controls the cycle of each synchronization to the AOF file, and the overall process is uncontrollable



3-4 AOF function turned on


  • Configuration: appendonly yes|no
  • Function: Whether to enable AOF persistence function, the default is not enabled
  • Configuration: appendfsync always| everysec | no
  • Function: AOF write data strategy
  • Configuration: appendfilename filename
  • Function: AOF persistent file name, the default name is appendonly.aof


Redis persistence full version

Then use restart the redis service, you can use the usr/local/redis/data directory You can see the appendonly.aof file below

Redis persistence full version

Then we execute a command on the redis client and check it out. You can see that the data will be stored in the file appendonly.aof.

Redis persistence full version


3-5 Problems with AOF writing data


Let's look at a case first. After we repeatedly set the name key, we opened the appendonly.aof file to view it. We can see that there are three operations, but these three operations are all modified by one key! Can't we only save the last key? With this question, we continue to look down

Redis persistence full version


##3-6 AOF rewriting


For example, we executed the set name command three times above, but in the end we only need the record of the last execution. That is, we only need the last execution record. Other records are not needed, and the compressed data will be rewritten into the aof file.


Our disk utilization has improved after rewriting

Also, the speed of data recovery will be faster.

It will also improve the efficiency of persistence.


3-7 AOF rewriting Rules


  • The timed-out data in the process will no longer be written to the file
  • Ignore deletion instructions, such as del, hdel, srem. There is also the problem mentioned in 3-5. Continuous operations on a key
  • Multiple write records of the same data are merged into one record: such aslpush list a lpush lsit b lpush list ccan be converted into lpush list a b c.


3-8 AOF manual rewrite


Command: bgrewriteaof


Following our questions 3-5, we execute the bgrewriteaof command on the command line and then view the appendonly.aof file


After execution, you will find that the file has become smaller and there is only one instruction in the file


Redis persistence full version


##3-9 Working principle of AOF manual rewriting


Redis persistence full version


##3-10 AOF automatic rewrite


Configuration:

auto-aof-rewrite-percentage 100 | auto-aof-rewrite-min-size 64mb

Trigger comparison parameters:

aof_current_size | aof_base_size

When aof_current_size > auto-aof-rewrite-min-size 64mb will start rewriting


This picture comes from the Internet

Redis persistence full version


##3-11 AOF workflow and rewrite flow = process


Redis persistence full version

Redis persistence full version##


4. Summary


The above is all the content of redis persistence.

The above is the detailed content of Redis persistence full version. 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