Redis 是一款非常流行的 Nosql 产品,和一般的 Nosql 不同的是,Reids 提供了数据的持久化功能,防止在出现意外的情况,可以进行数据备份恢复。Redis 支持的持久化方式分别为 Snapshotting ( 快照方式 bgsave ) 和 Append-only file ( 追加持久化 aof )。
Snapshotting 持久化方式
该方式是 Redis 默认开启的持久化方式,一次性把 Redis 中全部的数据存储在硬盘中,不过该方式会耗费大量的时间和服务器资源,尤其是数据量过大的时候。
1. 开启和关闭的方式
在 Redis 的配置文件中,找到下面几行配置项
save 900 1 #900秒内超过1个key被修改则发起快照保存
save 300 10 #300秒内超过10个key被修改则发起快照保存
save 60 10000 #60秒内超过10000个key被修改则发起快照保存
屏蔽上面的触发条件即可关闭快照方式。
2. 设置保存位置和快照文件名
备份的默认文件名为 dump.rdb,我们可以修改配置文件来改变默认文件名:
#修改 dbfilename 配置项的值即可改变快照文件名
dbfilename dump.rdb eg:dbfilename redis_bgsave.rdb
#修改 dir 配置项的值即可修改快照文件保存的路径
dir /var/lib/redis eg:dir ./
3. 手动进行快照
登录状态下直接执行 bgsave
命令即可:
127.0.0.1:6379> bgsave
Background saving started
未登录状态下执行:
$ redis-cli bgsave
Background saving started
Append-only file 持久化方式
Aof 模式的原理是将添加、修改和删除的的命令备份到文件中,恢复时执行该命令即可。
1. 开启和关闭方式
打开 Redis 的配置文件
#将 appendonly 的值改为yes即可
appendonly yes
#存储的文件名,默认为appendonly.aof
appendfilename "appendonly.aof"
如果 Bgsave 和 Aof 都开启,则以 Aof 为准。
2. 触条条件
触发条件需要在 Redis 配置文件中进行修改
#always方式是将每个数据变动的命令都存入磁盘中,速度比较慢,但是可以保证完全的持久化。
appendfsync always
#everysec方式是每秒进行磁盘写入,对于性能和持久化方面有很好的折中,这也是redis默认开启的触发条件
appendfsync everysec
#no方式依赖与操作系统,性能最好,但是对于持久化没有保证
appendfsync no
两种方式的各有优缺点,选择哪一种则需要根据自己的业务场景进行选择。不过幸运的是 Redis 4.0 版本后,有了混合持久化的功能,将 Bgsave 的全量和 Aof 的增量做了融合处理,这样既保证了恢复的效率又兼顾了数据的安全性,这样我们就能更好使用 Redis 了。
文章同步发布在我的个人博客中,传送门Hesunfly Blog
网友评论