redis的rdb和aof

断了今生、忘了曾经 提交于 2020-02-13 20:44:27

rdb

rdb是基本的持久化机制,一般在以下几个时机进行持久化

1.redis服务启动
2.redis服务停止
3.redis周期性的调度持久化和操作多少次进行持久化

针对第1,2两点显然是必须的,第三点是为了保证数据安全,所以周期性的进行持久化,一般的思路就是遍历所有的key,持久化到一个临时文件,然后替换成真实的文件,这样就完成了新旧文件的覆盖了。

缺点

1.耗时长
遍历所有key,如果key非常多则消耗很多cpu时间,影响客户端对数据的请求,产生阻塞和延迟,因为redis又是单线程处理请求,其调度和处理用户请求是在同一个线程中进行的,所以,比较消耗cpu时间。而且老是进行磁盘写,对磁盘也是一种消耗,如果redis运行了很长时间,其内存占用达到几个G,那么这个写磁盘文件时间也是非常久的

2.对磁盘压力大
每次持久化都持久化所有数据,产生新临时文件,替换旧文件,非常消耗磁盘

3.容易丢数据
数据一致性无法得到保证,容易丢失短暂时间内的少量数据,但是如果瞬时请求量比较大,那么就会丢失大量数据了,因为是异步持久化

优点

内容紧凑,文件所占空间比aof比较小,比较合适冷备份

适用场景

对数据一致性要求不高

数据迁移和冷备份恢复

aof

append only file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!