Redis持久化
前言:Redis是一款内存数据库,就算我们对自己的服务器足够的信任,不会出现宕机情况,但也会有可能出现突然断电等情况,造成Redis数据丢失。因此,我们需要向传统的关系型数据库一样对数据进行备份,将Redis在内存中的数据持久化到硬盘等非易失性介质中,来保证数据的可靠性。
使用场景:
- Redis发生故障或重启后,可直接用备份数据恢复
- Redis切换服务器时,可直接将备份文件迁移至另外一台服务器
Redis数据持久化提供了多种方式:
- RDB格式的快照文件,在指定时间内生成数据集的时间点快照
- AOF持久化记录redis的所有写操作命令,只追加文件形式持久化
- Redis可以同时使用RDB方式和AOF方式。
- 可关闭持久化功能,让数据只在redis运行时存在(根据redis的用途选择)
RDB(快照)持久化配置:(可直接从conf文件中配置,也可使用config set命令配置)
快照持久化是Redis内存中的数据在某一个时间点进行备份,在创建快照之后,用户可以对快照进行备份,需要注意的是:快照是某个时间点执行的,并不是每次更新都会创建快照。
系统发生崩溃时,只能保存上次快照的数据,因此快照持久化适用于数据不经常修改或者丢失部分数据影响不大的场景。
AOF持久化配置
AOF 的运作方式是不断地将命令追加到文件的末尾, 所以随着写入命令的不断增加, AOF 文件的体积也会变得越来越大。
可以通过设置auto-aof-rewrite-percentage 和 auto-aof-rewrite-min-size 选项来自动执行BGREWRITEAOF。
AOF 文件有序地保存了对数据库执行的所有写入操作, 这些写入操作以 Redis 协议的格式保存, 因此 AOF 文件的内容非常容易被人读懂, 对文件进行分析(parse)也很轻松。