本文主要是介绍redis数据备份,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Redis数据备份
- redis数据备份恢复分类
- 1 RDB备份
- 1.1 什么是RDB
- 1.2 RDB触发机制
- 1.2.1 RDB 2种触发机制
- 1.2.2 save和bgsave区别
- 1.3 RDB优点
- 1.4 RDB缺点
- 1.5 应用场景
- 2 AOF备份
- 2.1 什么是AOF
- 2.2 日志写入时机
- 2.3 写会时机
- 2.4 AOF重写
- 3 混合备份
redis数据备份恢复分类
1 RDB备份
1.1 什么是RDB
RDB是redis某一刻在内存中数据的快照。所谓的快照,就是记录在某一时刻的数据状态的文件。
1.2 RDB触发机制
1.2.1 RDB 2种触发机制
-
定时触发redis.conf中配置save/bgsave
表示多少秒触发一次,changes表示
save 900 1
save 300 10
save 60 3600
“save 900 1”表示如果900秒内至少1个key发生变化(新增、修改和删除),则重写rdb文件;
“save 300 10”表示如果每300秒内至少10个key发生变化(新增、修改和删除),则重写rdb文件;
“save 60 3600”表示如果每60秒内至少10000个key发生变化(新增、修改和删除),则重写rdb文件
-
命令触发
redis-cli: save / bgsave /flushall /shutdown
1.2.2 save和bgsave区别
save:redis主进程进行数据备份操作,其他数据操作将被阻塞;
bgsave:redis使用fork()函数启动子线程进行数据备份,redis主线程仍然可以处理key值得增加/删除/查询/修改操作;当redis主线程key发生增加/删除/修改操作时,会触发**写时复制**,这时主线程会将变化的数据复制一份给子进程进行备份。
1.3 RDB优点
1、数据恢复速度快
2、数据采用二进制和数据压缩方式写文件,文件体积小
1.4 RDB缺点
1、2次备份文件直接宕机,数据丢失量大
2、备份时占用cpu,服务器性能下降
1.5 应用场景
1、redis主从备份
2、数据完整性要求不高的业务
2 AOF备份
2.1 什么是AOF
AOF是记录从日志创建以来redis内存种所有key值增加/删除/修改命令的文件
2.2 日志写入时机
- 写前复制:在redis命令改变内存数据前就写日志
缺点:需要检查命令语法的合法性 - 写后复制:在redis命令改变内存数据后写日志
缺点:redis命令修改数据后宕机,数据将丢失
AOF是在主线程中进行,磁盘I/O过大,会阻塞下一个指令的执行
2.3 写会时机
- always:同步写回磁盘,数据完全性高,性能低
- everysec:每秒写回磁盘,兼顾数据完整性和性能
- no: 由系统决定写回磁盘时机,数据完整性低
2.4 AOF重写
- 随着时间的增加,写入的命令越来越多,文件过于庞大
- 触发redis.conf文件中配置,启动aof重新
- redis启动bgrewriteaof进程,根据当前的redis内存数据重新写一份aof文件,在写aof的同时,主线程的修改命令写到aof缓存区,最后写入aof文件。
3 混合备份
在RDB备份时间间隔内,启动aof数据备份redis数据改变指令
这篇关于redis数据备份的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!