Redis持久化
Redis持久化
Redis持久化有两种方式
- RDB (Redis Database)
- 在制定时间间隔内将内存数据快照写入磁盘,某一个
- AOF (Append Only File)
RDB (Redis Database),快照
使用:配置文件自动触发快照
$ vi redis.conf
...
...
# 时间和修改次数。推荐的三个配置:
# 3600s (1h) 内只要有一次修改就进行一次快照
# 300s (5min) 内只要有100次修改就进行一次快照
# 60s (1min) 内只要有10000次修改就进行一次快照
/save 3600 1
使用:手动触发快照
$ redis-cli
> set k1 v1
OK
> save # 保存快照
OK
> exit
$ ls
dump.rdb redis.conf
$ xxd dump.rdb # xxd是一个查看2进制或16进制内容的 Linux 命令
...
优缺点
- 缺点
- 丢失问题:意外宕机会丢失最后一次快照后的所有内容。更适合用来做定时备份
- 阻塞问题:
- save命令:备份期间 Redis 阻塞,无法接受请求。特别是Redis内存比较大时快照耗时较长
- bgsave命令:会创建一个子进程来负责快照,主进程可以继续处理请求。但有性能损耗,并且fork子进程这段时间也无法接受请求
- 总而言之,无法做到秒级的非阻塞快照
- 适用
- 所以更适合用来做备份。例如每天用 crontab 来执行一次 save 命令(crontab是 Linux 系统中用于设置周期性被执行的指令的命令)
AOF (Append Only File)
使用:配置文件
$ vi redis.conf
...
appendonly yes # 打开这个配置就可以了
...
优缺点
- 特点
- 在执行命令时,同时将命令写入到一个新文件中。Redis重启时会重新执行AOF文件中的命令来重建
链接到当前文件 0
没有文件链接到当前文件