一、全量同步与增量同步
Redis在不明原因宕机的情况下,数据是不会宕机的。因为数据已持久化。持久化策略分为全量同步与增量同步.
1、全量同步(RDB):每天定时(避开高峰期)或者采用一个周期实现将数据拷贝到另个一地方。如果突然断电,会造成数据丢失。
2、增量同步(AOF):偏向实时同步。根据命令操作,对数据实现同步。频率非常高,对服务器同步的压力非常大,保证数据不丢失。
增量同步比全量同步更加消耗服务器的内存,但是能够更加的保证数据的同步。
二、 底层原理
RDB和AOF同时开启,优先使用aof
1、RDB
主线程:监听redis数据请求
子线程(fork):处理rdb数据同步,写成一个二进制文件dump 文件存储到硬盘,格式为rdb。(每次同步都会覆盖原来的dump.rdb文件)每个临时rdb文件都可能使最终rdb文件
2、AOF
以每次写的请求记录到aop文件中,以日志文件的形式记录下来。
在Redis的配置文件中存在三种同步方式,它们分别是:
appendfsync always #每次有数据修改发生时都会写入AOF文件,能够保证数据不丢失,但是效率非常低。
appendfsync everysec #每秒钟同步一次,可能会丢失1s内的数据,但是效率非常高。(将写的请求记录到缓冲区,每秒从缓冲区读取写到aof文件中。)
appendfsync no #从不同步。高效但是数据不会被持久化。
直接修改redis.conf中 appendonly yes
建议最好还是使用everysec 既能够保证数据的同步、效率也还可以。