乐趣区

关于redis:数据安全与性能Redis实战

长久化

  • 快照(rdb):保留某个工夫点内存中所有数据的正本。(BGSAVE/SAVE)

毛病:存在数据失落:下一次快照创立过程中,若产生解体,会失落上次快照后的所有数据。

  • AOF:保留写命令到 AOF 文件开端,记录数据变动。(相似 Mysql 的 binlog)

毛病:保留的文件可能会比拟宏大,占用很多硬盘空间。


两者既能够独自应用,也能够协同应用。

RDB


BGSAVE 会创立子过程来进行贮存,会与主过程竞争资源;而 SAVE 则间接阻塞客户端申请,转而去备份。

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

AOF

审慎应用 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这个为必须的。

即可在 conf 配置文件设置 salveof 来选定从服务器,也可通过 slaveof 命令来设置。
slave 同步前会清空之前的所有数据。
redis 不反对主 - 主复制。(相互设成对方的 slave,不反对!)

毛病:如果主挂了,那就没有写服务器了。(主从连,sentinel 模式能够改善这一毛病)

主从连

从服务器能够领有本人的从服务器。

主从复制与从从复制的惟一区别:在主服务器 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 的从。

法二:本人作主。 B 本人作为主服务器,再创立新的从服务器 C。(redis sentinel 就是监听故障,晋升从为主)

退出移动版