03-redis数据持久化
持久化有两种类型:RDB 和 AOF
RDB快照持久化默认开启,一次性吧redis中全部的数据保存一份储存在硬盘中,如果数据非常多好几G 就不适合该持久化操作。
快照持久化在本地硬盘保留的数据备份文件:dump.rdb
即使是将redis进程关闭后注销电脑,开机后再次启动redis,然后输出 keys *会看到之前的数据。
大多数情况下为手动发起持久化 既输入 bgsave命令进行异步手动更新快照
优点:适合大规模的数据恢复,对数据完整性一致性要求不高。
缺点:备份的过程中内存中的数据被克隆了一份,既使用了多一倍的内存消耗。
总结:RDB在保存RDB文件时,父进程会生成一个子进程,接下来的工作全都交给子进程来做,父进程不需要在做其他IO操作,所以RDB持久化方式可以最大化redis的性能。
RDB需要经常创建子进程来保存数据集到硬盘上,单数据比较大的时候,保存的过程就非常耗时,可能会导致redis在一些毫秒级不能相应客户请求。
开启AOF持久化
注:开启AOF后开启之前的数据会被清空,配置文件中修改appendonly为 yes
开启后用户执行的每一个增加、删除、修改指令都会被备份到appendonly.aof文件中,还原数据的时候就是执行具体指令而已。
AOF也有以上三种持久化类型,默认开启中间一秒一次的类型。
相同的数据集而言aof文件要远大于rdb文件,恢复速度慢于rdb
AOF文件时一个只进行追加日志文件,redis可以在AOF文件体积变得过大时自动在后台对AOF进行重写,AOF文件有序地保存了对数据库执行的所有写入操作,这些操作以redis协议的格式保存,因此AOF文件的内容非常容易被读懂,对文件进行分析也很轻松。但对于相同的数据集来说,AOF文件的体积通常要大于RDB文件的体积
就如官方文档中所述:AOF和RDB持久化可以同时启用没有问题。
在通常情况下redis重启会优先载入AOF文件来恢复数据。