数据安全与性能——《Redis实战》

持久化

  • 快照(rdb):保存某个时间点内存中所有数据的副本。(BGSAVE/SAVE)
缺点:存在数据丢失:下一次快照创建过程中,若发生崩溃,会丢失上次快照后的所有数据。
  • AOF:保存写命令到AOF文件末尾,记录数据变化。(类似Mysql的binlog)
缺点:保存的文件可能会比较庞大,占用很多硬盘空间。

数据安全与性能——《Redis实战》_第1张图片
两者既可以单独使用,也可以协同使用。

RDB

数据安全与性能——《Redis实战》_第2张图片
BGSAVE会创建子进程来进行储存,会与主进程竞争资源;而SAVE则直接阻塞客户端请求,转而去备份。

对于占用几十个GB内存的Redis服务器,BGSAVE创建进程要花费15秒,备份完需要15~20分钟。
而SAVE仅需要3~5分钟。所以常用做法是,写一个脚本,在半夜去手动SAVE。

AOF

数据安全与性能——《Redis实战》_第3张图片

谨慎使用appendfsync:always。尤其是固态,一般推荐使用everysec。

bgrewriteaof命令:类似bgsave,新建子线程,用于精简AOF文件,删除冗余命令,重写AOF文件。可通过auto-aof-rewrite-min-sizeauto-aof-rewrite-percentage来自动执行重写。

复制

主从同步

主用于写,从用于读。master的rdb文件先交给slave去写入自己内存,再将同步期间master收到的写命令放入缓冲区,rdb恢复完后,会再次接收master缓冲区传来的写命令。而后master都将aof定期交给slave完成同步。客户端写入master,读取访问slave。
相关配置:

  • 主:dirdbfilename必须配好。
  • 从:slaveof host port这个为必须的。

数据安全与性能——《Redis实战》_第4张图片

即可在conf配置文件设置salveof来选定从服务器,也可通过slaveof命令来设置。
slave同步前会清空之前的所有数据。
redis不支持主-主复制。(互相设成对方的slave,不支持!)
缺点:如果主挂了,那就没有写服务器了。
(主从连,sentinel模式可以改善这一缺点)

主从连

从服务器可以拥有自己的从服务器。
数据安全与性能——《Redis实战》_第5张图片
主从复制与从从复制的唯一区别:在主服务器A,从服务器X有一个从服务器Y的模式下,在X与A同步时X写入rdb至内存时,会与Y断开连接,导致Y重新同步。(与主同步时,断开自己从的连接)

适用场景:读的需求一台从服务器不能满足,需要更多的读服务器。
注:检查是否已全部写入硬盘:info中 aof-pending-bio-fsync属性是否为0

更换主服务器

在主服务器A,从服务器B,A挂了的场景下。


法一:另寻新主。提升C为主服务器。
作法:B进行一次SAVE,然后将快照交给C,C启动redis,然后B改设为C的从。
数据安全与性能——《Redis实战》_第6张图片
法二:自己作主。B自己作为主服务器,再创建新的从服务器C。(redis sentinel就是监听故障,提升从为主)

你可能感兴趣的:(redis)