1.RDB方式(默认)
可以定期的将数据库中的数据持久化到磁盘上(将数据库状态写入到一个压缩的二进制文件)。该持久化操作可自动或手动执行。
如果是手动执行有两个命令:save 和 bgsave。
save:该命令会阻塞服务器进程,直到rdb文件创建完毕为止。在服务器阻塞期间将不响应任何请求。
bgsave:用子进程创建rdb文件。
和save或bgsave创建rdb文件不同,rdb文件的载入是在服务器启动之后自动载入的,所以并没有载入rdb文件的命令。
值得一提的是,因为aof文件的更新频率比rdb高,所以如果服务器开启了aof持久化功能,会优先载入aof文件。
服务器在载入rdb文件时也会处于阻塞状态,知道rdb文件载入完毕。
bgsave执行过程中,save、bgsave、bgrewriteaof的状态:
bgsave执行期间,因为bgsave是执行在子进程上,所以save和bgsave都会被拒绝,避免产生竞争条件。
bgsave执行期间,bgrewriteaof会被延迟到bgsave执行完再执行;
bgrewriteaof执行期间,bgsave会被拒绝;
优点:它只有一个文件,并且数据内容十分紧凑,因此性能更高,并且数据的备份和灾难恢复较为简单,在恢复大数据集时比aof快;
缺点:不能很好的保证数据不丢失,在保存和还原数据时较为耗时
2.AOF方式
通过日志记录服务器的写或删除操作,
三种同步方式:
1)每秒同步
默认的策略,速度快
2)每修改同步
速度慢,但是安全性比较高
3)不同步
优点:
1)更高的数据安全性
在写入磁盘的过程中突然宕机,可在下一次redis启动时通过redis-check-aof解决数据一致性的问题。