持久化功能:

redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到磁盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)里面。

数据保存到硬盘的过程就成为“持久化”效果。

Snap shotting 快照持久化:

  • 快照事件是一个有着特殊用途的领域事件:它将任意数量的事件归纳为单个事件。
  • 通过定期创建和存储快照事件,事件存储不必返回长的事件列表。只返回最后一个快照事件和在快照之后发生的所有事件

该持久化默认开启,一次性 把 redis 中全部的数据保存一份存储在硬盘中,如果数据非常多(10-20G)就不适合频繁该持久化操作。
008:Redis-快照持久化和AOF持久化_经验分享
如上图所示:dump.rdb就是快照持久化在本地硬盘中保存的数据备份文件。

我们打开redis.conf 看一下他是怎么来进行操作的:
008:Redis-快照持久化和AOF持久化_经验分享_02
快照持久化的备份频率:
008:Redis-快照持久化和AOF持久化_经验分享_03
900秒时间内,有1个key被修改就进行一次快照保存。
300秒时间内,有10个key被修改就进行一次快照保存。
60秒时间内,有10000个key被修改就进行一次快照保存。

以上三个sava的意思:
数据修改的频率高,备份的频率也高
数据修改的频率低,备份的频率也低

快照持久化文件名字:
008:Redis-快照持久化和AOF持久化_经验分享_04
这个就是备份文件的名字,你可以修改为自己喜欢的名字…

快照持久化文件存储位置:
008:Redis-快照持久化和AOF持久化_经验分享_05
dir ./ 保存在当前目录下。

手动发起快照持久化:
008:Redis-快照持久化和AOF持久化_经验分享_06

当我们在生产环境中,需要在8点到12点时间没间隔一个小时做一次快照持久化。
但是在10点55分的时候断电了,那会损失很多的数据。
但是也不能每分钟都做快照持久化,太过消耗资源,所以提出了精细持久化。
也就是下面要介绍的AOF持久化。
两者配合使用可以尽最大程度保证数据安全。
008:Redis-快照持久化和AOF持久化_经验分享_07

append only file (AOF持久化):

  • AOF也就是append ONLY file,意味只进行追加文件操作

本质:把用户执行的每个"" 指令(添加,修改,删除)都备份到文件中,还原数据的时候就是执行具体写指令而已。

开始 AOF 持久化(会清空redis内部的数据):

要使用AOF持久化的时候,在刚安装的时候启动最好,若你在使用了一段时间后再启动他,他会清空redis内部数据才开启。

我们打开配置文件:

vim redis.conf

008:Redis-快照持久化和AOF持久化_经验分享_08
现在是未开启,我们把no改为yes就可以开启了。
008:Redis-快照持久化和AOF持久化_经验分享_09

下面是AOF保存的文件名称:

默认是appendonly.aof
008:Redis-快照持久化和AOF持久化_经验分享_10

修改完配置文件,还需要重启进程,所以先kill掉正在运行的进程。

ps -A | grep redis 

008:Redis-快照持久化和AOF持久化_经验分享_11
查看当前文件,已经生成了一个appendonly.aof文件。
008:Redis-快照持久化和AOF持久化_经验分享_12

下面我们来测试下AOF持久化:

当前 aof 文件没有东西,文件大小为0
008:Redis-快照持久化和AOF持久化_经验分享_13

我们选择一个数据库操作。
008:Redis-快照持久化和AOF持久化_经验分享_14

再次查看文件:
008:Redis-快照持久化和AOF持久化_经验分享_15
可见文件已经发生了改变。我们打开文件查看
008:Redis-快照持久化和AOF持久化_经验分享_16
008:Redis-快照持久化和AOF持久化_经验分享_17
AOF持久化已成功开启。

AOF持久化频率:
意思是每秒备份一次。
008:Redis-快照持久化和AOF持久化_经验分享_18

008:Redis-快照持久化和AOF持久化_经验分享_19

为AOF备份文件做优化处理:
我们在操作的时候,每秒输入一个指令,aof文件都会进行一次备份。
比如我们进行10次incr num :
008:Redis-快照持久化和AOF持久化_经验分享_20
aof文件就会记录10次incr num 操作。
他其实就等于 set num 10 ,存储成set num 10 的话,会节省很多空间。所以我们要优化下aof备份文件。

./redis-cli bgrewriteaof:
008:Redis-快照持久化和AOF持久化_经验分享_21

再次查看:
008:Redis-快照持久化和AOF持久化_经验分享_22
aof文件已经变成了257个字节。内容已经优化压缩。

redis持久化相关指令补充:
008:Redis-快照持久化和AOF持久化_经验分享_23