缺点:存在数据丢失:下一次快照建立过程当中,若发生崩溃,会丢失上次快照后的全部数据。
缺点:保存的文件可能会比较庞大,占用不少硬盘空间。
二者既能够单独使用,也能够协同使用。redis
BGSAVE会建立子进程来进行储存,会与主进程竞争资源;而SAVE则直接阻塞客户端请求,转而去备份。sql
对于占用几十个GB内存的Redis服务器,BGSAVE建立进程要花费15秒,备份完须要15~20分钟。 而SAVE仅须要3~5分钟。因此经常使用作法是,写一个脚本,在半夜去手动SAVE。
谨慎使用appendfsync:always。尤为是固态,通常推荐使用everysec。
bgrewriteaof
命令:相似bgsave,新建子线程,用于精简AOF文件,删除冗余命令,重写AOF文件。可经过auto-aof-rewrite-min-size
和auto-aof-rewrite-percentage
来自动执行重写。服务器
主用于写,从用于读。master的rdb文件先交给slave去写入本身内存,再将同步期间master收到的写命令放入缓冲区,rdb恢复完后,会再次接收master缓冲区传来的写命令。然后master都将aof按期交给slave完成同步。客户端写入master,读取访问slave。
相关配置:app
dir
和dbfilename
必须配好。slaveof host port
这个为必须的。便可在conf配置文件设置salveof来选定从服务器,也可经过slaveof命令来设置。
slave同步前会清空以前的全部数据。
redis不支持主-主复制。(互相设成对方的slave,不支持!)
缺点:若是主挂了,那就没有写服务器了。 (主从连,sentinel模式能够改善这一缺点)
从服务器能够拥有本身的从服务器。
主从复制与从从复制的惟一区别:在主服务器A,从服务器X有一个从服务器Y的模式下,在X与A同步时X写入rdb至内存时,会与Y断开链接,致使Y从新同步。(与主同步时,断开本身从的链接)spa
适用场景:读的需求一台从服务器不能知足,须要更多的读服务器。
注:检查是否已所有写入硬盘:info中aof-pending-bio-fsync
属性是否为0
在主服务器A,从服务器B,A挂了的场景下。线程
法一:另寻新主。提高C为主服务器。
做法:B进行一次SAVE,而后将快照交给C,C启动redis,而后B改设为C的从。
法二:本身做主。B本身做为主服务器,再建立新的从服务器C。(redis sentinel就是监听故障,提高从为主)code