Redis 持久化

持久化

如果我们将数据存放于内存:高效、断电(关机)内存数据会丢失,但是如果将数据存放于硬盘:读写速度慢于内存,断电数据不会丢失。Redis一共提供了两种能将数据从内存存放到磁盘的方法——RDB、AOF

RDB

原理

原理是redis会单独创建一个与当前进程一摸一样的子进程来进行持久化,这个子进程的所有数据都和原进程相同,会先将数据写入到一个临时文件中,待持久化结束后,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程不进行任何IO操作,这就确保了极高的性能。

RDB是redis的默认持久化机制。 RDB相当于照快照,保存的是一种状态。 几十G数据经过转二进制和压缩的过程转换伪几KB快照快照是默认的持久化方式。这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。
快照条件:
1.服务器正常关闭时:shutdown
2.key满足一定条件时
save 900 1 //每900秒(15分钟) 至少1个key发生变化,产生快照
save 300 10 //每300秒(5分钟) 至少10个key发生变化,产生快照
save 60 10000 //每60秒(1分钟 ) 至少10000个key发生变化,产生快照

优点:

a. 快照保存数据极快、还原数据极快
b. 适用于灾难备份

缺点:

a. 由于快照方式是在一定间隔时间做一次的,所以如果redis 意外down 掉的话,就会丢失最后一次快照后的所有修改。如果应用要求不能丢失任何修改的话,可以采用aof 持久化方式。
b. 小内存机器不适合使用,RDB机制符合要求就会照快照,内存小的话会对服务器造成很大的压力。

RDB底层操作

在这里插入图片描述
在这里插入图片描述

rdb能否关闭

普通情况下,将save配置注释掉就可以关闭;
在主从集群模式下,rdb是关闭不了的
因为从机复制主机数据,主机把rdb持久化文件发给从机,因此主机必须开启rdb;

AOF

AOF持久化,默认是关闭的,默认是打开RDB持久化appendonly yes,可以打开AOF持久化机制,在生产环境里面,一般来说AOF都是要打开的,除非你说随便丢个几分钟的数据也无所谓。打开AOF持久化机制之后,redis每次接收到一条写命令,就会写入日志文件中,当然是先写入os cache的,然后每隔一定时间再fsync一下
而且即使AOF和RDB都开启了,redis重启的时候,也是优先通过AOF进行数据恢复的,因为aof数据比较完整

配置AOF的fsync策略

配置AOF的fsync策略,有三种策略可以选择,一种是每次写入一条数据就执行一次fsync; 一种是每隔一秒执行一次fsync; 一种是不主动执行fsync
AOF 比快照方式有更好的持久化性,是由于在使用aof 持久化方式时,redis 会将每一个收到的写命令都通过write 函数追加到文件中(默认是appendonly.aof)。当redis 重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

三种方式如下(默认是:每秒 fsync 一次):
a. appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证完全的持久化
b. appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
c. appendfsync no //完全依赖 os,性能最好,持久化没保证

AOF产生的问题:

aof 的方式也同时带来了另一个问题。持久化文件会变的越来越大。例如我们调用 incr test命令 100 次,文件中必须保存全部的 100 条命令,其实有 99 条都是多余的。
解决方案:
因为AOF文件里面包含了重建数据库状态所需的所有写命令,所以服务器只要读入并重新执行一遍AOF文件里面保存的写命令,就可以还原服务器关闭之前的数据库状态。
在这里插入图片描述

RDB和AOF如何选择

a. 不要仅仅使用RDB,因为那样会导致你丢失很多数据
b.也不要仅仅使用AOF,因为那样有两个问题,第一,你通过AOF做冷备,没有RDB做冷备恢复速度更快; 第二,RDB每次简单生成数据快照,更加健壮,可以避免AOF这种复杂的备份和恢复机制的bug
c. 综合使用AOF和RDB两种持久化机制,用AOF来保证数据不丢失,作为数据恢复的第一选择; 用RDB来做不同程度的冷备,在AOF文件都丢失或损坏不可用的时候,还可以使用RDB来进行快速的数据恢复

冷备份

冷备份(cold backup),也被称为离线备份,是指在关闭数据库并且数据库不能更新的状况下进行的数据库完整备份。并可对数据进行指定恢复
1、 是非常快速的备份方法(只需拷文件)
2、 容易归档(简单拷贝即可)
3、 容易恢复到某个时间点上(只需将文件再拷贝回去)
4、 能与归档方法相结合,做数据库“最佳状态”的恢复。
5、 低度维护,高度安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值