Redis的持久化机制RDB(七——上)

redis的数据是缓存在内存中的,一旦redis服务器发生故障(或者断电),内存中的数据就会消失,但是redis是有持久化机制的,redis会把自己缓存的数据备份到磁盘上,当重新启动redis服务器之后,redis就会从磁盘中恢复之前的数据。

redis共有两种持久化机制:RDBAOF

一、RDB持久化机制

RDB持久化机制是每隔一段时间就将当前时间点的redis数据集的快照进行备份,时间间隔可以设置。

完成rdb快照文件的生成之后,就替换之前的旧的快照文件dump.rdb,每次生成一个新的快照,都会覆盖之前的老快照

redis的持久化功能是可以关闭的,同时一旦将redis服务器关闭或者宕机,所有缓存的数据也会随之消失。

可以同时使用RDB和AOF两种持久化机制。

二、RDB的优点与缺点

优点:

每隔一段时间,全量备份缓存数据。以单独文件的形式进行备份,而且可以简单的恢复不同版本的数据,比如我们以备份的时间点对备份文件进行命名,这样就形成了不同版本的备份数据,在恢复的时候只要选中要恢复的版本就可以。

非常适合做灾备(灾难恢复),可以远程传输备份的文件。一个互联网企业一旦做大,就一定会有单独的数据中心,这个时候我们可以把redis持久化的数据文件远程传输到数据中心,在本地服务器恢复后从远处的数据中心恢复数据。

redis在进行备份的时候,主进程会生成子进程进行数据备份,在子进程进行数据备份的时候,主进程不会有任何IO操作(不会写入修改或删除),保证备份数据的完整性。

相对于AOF来说,可以更快的恢复更大的数据集文件。

缺点:

RDB每隔一段时间就会进行备份,如果在备份的时候服务器出现问题,那么最后一次要备份的文件就会丢失,也就是只能恢复之前备份的版本。如果我们可以接收这种数据的非完整性(最后一次数据丢失),我们就可以使用这种方法。

子进程在备份数据的时候会占用和父进程一模一样的资源,在备份的数据集比较大的时候,会增大CPU的损耗,如果服务器性能比较高的话,这种损耗可以不计。

无法做到实时备份,因为RDB是在(间隔的)某一时间点进行全量备份。

三、RDB持久化配置

# 每900秒钟如果有超过1个key发生变化,则基于现在缓存中的数据进行一个dump.rdb快照,其他save同理
# 测试:写入几条数据,等待5秒钟,会发现自动进行了一次dump rdb快照,在dump.rdb中发现了刚插入的数
# 据
save 900 1
save 300 10
save 60 10000

# 在保存过程中发生错误,停止写操作:yes:如果save过程出错,则停止写操作  no:可能造成数据不一致
stop-writes-on-bgsave-error yes

# 压缩rdb文件:yes:开启rdb压缩模式  no:关闭,会节约cpu损耗,但是文件会大,道理同nginx
rdbcompression yes

# 在保存和加载rdb文件时,对数据进行校验
# yes:使用CRC64算法校验对rdb进行数据校验,有10%性能损耗   no:不校验
rdbchecksum  yes

# rdb文件名
dbfilename dump.rdb

# rdb文件的保存目录,一般在安装时的配置就会写上自己的路径
dir /usr/local/redis/working





 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值