redis-cli 持久化,复制,哨兵,事务,流水线

一.持久化:

快照文件RDB

保存“开始”创建新快照一刻的内存快照,创建过程的内存变化不会被记录

创建快照的办法有几种

1.客户端可以通过想Redis发送BGSAVE来创建一个快照,redis会调用fork来创建一个子进程,然后子进程负责将快照写入硬盘,而父进程则继续处理命令请求

2.客户端想redis发送SAVE命令创建快照,接到SAVE命令的Redis服务器在快照创建完毕之前将不再响应任何其他命令。

3.save 60 10000,当60秒内有10000次写入,redis就会自动触发BGSAVE命令

4.SHUTDOWN请求时,会执行SAVE命令

5.当一个Redis服务器连接另一个Redis服务器,并向对方发送SYNC命令来开始一次复制操作的时候,如果主服务器目前没有在执行BGSAVE操作,或者主服务器并非刚刚执行完BGSAVE操作,那么主服务器就会执行BGSAVE

适用于丢失一部分数据也不会造成问题的应用程序,或者有办法恢复的场景

问题:

当内存很大时,fork子进程(同步?为什么不用线程),会导致系统长时间停顿,根据机器性能每1G增加10~20毫秒或200~300毫秒,如果占用了20GB,标准硬件上上运行BGSAVE所创建的子进程将导致Redis停顿200~400毫秒,在一台拥有68GB内存的Xen虚拟机上对一个占用50GB内存的redis服务器执行BGSAVE命令的话,光是创建子进程就需要花费15秒以上,而生成快照则需要花费15~20分钟。

AOF

写命令追加到AOF文件的末尾。always,everysec,no

问题:

aof文件的体积大小。BGREWRITEAOF命令通过移除AOF文件的冗余命令来重写AOF文件,使AOF文件的体积变得尽可能小。BGREWRITEAOF与BGSAVE相似,redis会创建一个子进程,然后由子进程负责对AOF文件进行重写,所以还是会发生页表等进程资源copy给子进程时带来的消耗

auto-aof-rewrite-percentage 100和auto-aof-rewrite-min-size 64mb当aof文件的体积大于64MB,并且AOF文件的体积比上一次重写之后的体积大了至少一倍(100%)的时候,redis将执行BGREWRITEAOF命令。

二.复制

slaveof host port    从服务器在进行同步时,会清空自己的所有数据。 不支持主主复制。

主服务器执行BGSAVE时会使用缓冲区记录被执行的写命令,待快照文件发送完毕,开始向从服务器发送存储在缓冲区里的写命令。

三.事务

watch multi exec

四.流水线

multi exec

当Redis从一个客户端那里收到你multi命令时,redis会将这个客户端之后发送的所有命令都放入到一个队列里面,直到这个客户端发送EXEC命令为止。然后redis就会在不被打断的情况下,一个接一个的执行存储在队列里面的命令。

2.验证dubbo。router层 集群容错负载均衡

3.Spring技术内幕

猜你喜欢

转载自www.cnblogs.com/lccsblog/p/12003226.html
今日推荐