redis 备份导出rdb_redis学习--的持久化数据备份(RDB和AOF)

本文详细介绍了Redis的持久化机制,包括RDB(dump.rdb文件)和AOF两种方式。RDB是定期快照,提供数据恢复时的高效加载,但可能丢失最后一次快照后的数据。AOF记录每次写操作,保证数据完整性,但可能影响性能。此外,文章还讨论了Redis配置文件中与持久化相关的参数设置及其影响。
摘要由CSDN通过智能技术生成

一、dump.rdb文件是怎么生成的

二、什么是redis持久化

三、redis的RDB是什么?

四、redis配置文件redis.config相关配置

五、redis优点

六、redis缺点

redis比memcache作为缓存数据库强大的地方:(1)支持数据类型比较多,(2)redis持久化功能。

一、dump.rdb文件是怎么生成的

在redis服务挂掉的时候,根据redis的配置文件,会自动备份数据到本地。

dump.rdb是由redis服务器自动生成的。

默认情况下,每隔一段时间redis服务器程序会自动对数据库做一次遍历,把内存快照写在一个叫做“dump.rdb”文件里,这种持久化机制叫做SNAPSHOT。有了SNAPSHOT后,如果服务器宕机,重新启动redis服务器程序时redis会自动加载dump.rdb,将数据库恢复到上一次SNAPSHOT的状态。

至于多久一次做一次SNAPSHOT,SNAPSHOT文件的路径和文件名,你可以在redis的config文件中指定。

二、什么是redis的持久化

Redis提供了不同级别的持久化方式:

(1)RDB持久化方式:能够在指定的时间间隔能对你的数据进行快照存储。

(2)AOF持久化方式:每次对服务器写的操作,当服务器重启的时候回重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾。redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。

(3)如果你只希望你的数据在服务器运行的时候存在,你可以不使用任何持久化方式。

(4)你也可以同时开启这两种持久化方式。当redis服务重启的时候回优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整

三、Redis的RDB是什么

RDB在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是SNAPSHOT快照。

它恢复时是将快照文件直接写入到内存里,redis会单独创建(fork)一个子进程进行持久化吗,会先将数据写入到一个临时文件中,持久化过程都结束了,在用这个临时文件替换上从持久化好的文件。

整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是敏感,那RDB方式要比AOF方式更加高效。、

redis的缺点是最后一次持久化后的数据可能丢失。

四、redis配置文件redis.config相关配置

(一)RDB快照方式持久化磁盘

先看redis.window.config文件

################################ SNAPSHOTTING ################################

#

# Save the DB on disk:

#

# save#

# Will save the DBifboth the given number of seconds and the given

# number of write operations against the DB occurred.

#

# In the example below the behaviour will be to save:

# after900 sec (15 min) if at least 1key changed

# after300 sec (5 min) if at least 10keys changed

# after60 sec if at least 10000keys changed

#

# Note: you can disable saving completely by commenting out all"save"lines.

#

# It is also possible to remove all the previously configured save

# points by adding a save directivewitha single empty string argument

# likeinthe following example:

#

# save""save900 1save300 10save60 10000# Bydefault Redis will stop accepting writes ifRDB snapshots are enabled

# (at least one save point) and the latest background save failed.

# This will make the user aware (ina hard way) that data is not persisting

# on disk properly, otherwise chances are that no one will notice and some

# disaster will happen.

#

# If the background saving process will start working again Redis will

# automatically allow writes again.

#

# Howeverifyou have setup your proper monitoring of the Redis server

# and persistence, you may want to disablethisfeature so that Redis will

#continue to work as usual even if there are problems withdisk,

# permissions, and so forth.

stop-writes-on-bgsave-error yes

# Compress string objects using LZF when dump .rdb databases?# Fordefault that's set to 'yes' as it's almost always a win.

# If you want to save some CPUin the saving child set it to 'no'but

# the dataset will likely be biggerifyou have compressible values or keys.

rdbcompression yes

# Since version5of RDB a CRC64 checksum is placed at the end of the file.

# This makes the format more resistant to corruption but there is a performance

# hit to pay (around10%) when saving and loading RDB files, so you can disable it

#formaximum performances.

#

# RDB files createdwithchecksum disabled have a checksum of zero that will

# tell the loading code to skip the check.

rdbchecksum yes

# The filename where to dump the DB

dbfilename dump.rdb

# The working directory.

#

# The DB will be written insidethis directory, withthe filename specified

# above using the'dbfilename'configuration directive.

#

# The Append Only File will also be created insidethisdirectory.

#

# Note that you must specify a directory here, not a file name.

dir ./

4.1如何触发RDB快照

配置文件中默认的快照配置

save 900 1save300 10save60 10000

上面的意思就是说:

(1)如果至少一个键改变,会在900秒(15分钟)之后执行save操作

(2)如果至少改变10个键,则在300秒(5分钟)之后执行save操作

(3)如果至少改变10000个键,则在60秒(1分钟)之后执行save操作

命令save:只管保存,其他不管

命令bgsave:redis会在后台异步进行快照操作,快照的同时还可以响应客户端请求。

4.2默认的RDB方式保存的是dump.rdb文件,恢复识别也是dump.rdb

4.3stop-writes-on-bgsave-error yes

如果后台保存到磁盘发生错误,将停止写操作,使用LZF压缩rdb文件,这会耗CPU,但是可以减少磁盘占用。

4.4rdbcompression yes

保存rdb和加载rdb文件的时候校验,可以防止错误,但是要付出约10%的性能,可以关闭,提高性能。

4.5rdbchecksum yes

导出的rdb文件名

4.6dbfilename dump.rdb

设置工作目录,rdb文件会写到该目录,append only file也会存储在该目录下

4.7dir ./

redis会自动快照保存到磁盘或者调用bgsave,是后台进程完成的,其他客户端任然可以读写redis服务,后台保存快照到磁盘会占用大量的内存。

(二)AOF(append-only file)方式持久化

另外一种方式为递增的方式,将会引起数据变化的操作,持久化到文件中,重启redis的时候,通过操作命令,恢复数据。

每次执行写操作命令之后,都会将数据写到server.aofbuf中。

#

# More details please check the following article:

# http://antirez.com/post/redis-persistence-demystified.html

#

# If unsure, use"everysec".

# appendfsync always

appendfsync everysec

# appendfsync no

# When the AOF fsync policy is set to always or everysec, and a background

# saving process (a background save or AOF log background rewriting) is

# performing a lot of I/O against the disk, in some Linux configurations

# Redis may block too long on the fsync() call. Note that there is no fix for#this currently, as even performing fsync ina different thread will block

# our synchronous write(2) call.

当配置为always的时候,每次server.aofbuf中的数据写入到文件之后,才会返回到客户端,这样可以保证数据不丢失,但是频繁的IO操作,会降低性能。

everysec每秒写一次,这可能会丢失一秒内的操作。

五、redis优点

(1)适合大规模的数据恢复

(2)对数据完整性和一致性要求不高

六、redis缺点

(1)在一定间隔时间做一次备份,所以redis意外的挂掉的话,就会丢失最后一次快照后的所有修改

(2)fork的时候,内存中的数据被被克隆一份,大致2倍的膨胀性需求考虑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值