redis杂记

来源:互联网 发布:活动报名软件 编辑:程序博客网 时间:2024/06/06 08:12

Redis repl-disable-tcp-nodelay配置

(1)在slave和master同步后(发送psync/sync),后续的同步是否设置成TCP_NODELAY。
假如设置成yes,则redis会合并小的TCP包从而节省带宽,但会增加同步延迟(40ms),造成master与slave数据不一致。
假如设置成no,则redis master会立即发送同步数据,没有延迟。
前者关注性能,后者关注一致性
(2)是否禁止复制tcp链接的tcp nodelay参数,可传递yes或者no。默认是no,即使用tcp nodelay。如果master设置了yes来禁止tcp nodelay设置,在把数据复制给slave的时候,会减少包的数量和更小的网络带宽。但是这也可能带来数据的延迟。默认我们推荐更小的延迟,但是在数据量传输很大的场景下,建议选择yes。

redis执行slaveof命令过程原理(执行步骤)

①从数据库向主数据库发送sync命令。
②主数据库接收sync命令后,执行BGSAVE命令(保存快照),创建一个RDB文件,在创建RDB文件期间的命令将保存在缓冲区中。
③当主数据库执行完BGSAVE时,会向从数据库发送RDB文件,而从数据库会接收并载入该文件。
④主数据库将缓冲区的所有写命令发给从服务器执行。
⑤以上处理完之后,之后主数据库每执行一个写命令,都会将被执行的写命令发送给从数据库。

注意:在Redis2.8之前,主从断线或则重启之后再重连接,都需要做一次完整的sync操作(5步骤),即使断线期间只有几条的更新操作或则是没有操作,导致系统资源极度浪费。Redis2.8之后,会用一个psync来替换sync,不会进行完成的sync操作,只需要同步断线期间的记录。相关参数:repl-backlog-size、repl-backlog-ttl

repl-diskless-sync-delay

diskless复制的延迟时间,防止设置为0。一旦复制开始,节点不会再接收新slave的复制请求直到下一个rdb传输。所以最好等待一段时间,等更多的slave连上来。
repl-diskless-sync-delay默认为5

sentinel日志信息

# Sentinel runid is 07a40fd381d618f0716c20b270d5c1bd47ef8fa3    +monitor master mymaster 127.0.0.1 10086 quorum 2  #主加入监控    +slave slave 127.0.0.1:10087 127.0.0.1 10087 @ T1 127.0.0.1 10086 #检测到一个slave并添加进slave列表    +slave slave 127.0.0.1:10088 127.0.0.1 10088 @ T1 127.0.0.1 10086 #检测到一个slave并添加进slave列表    +sentinel sentinel 127.0.0.1:20087 127.0.0.1 20087 @ T1 127.0.0.1 10086 #增加了一个sentinel    +sentinel sentinel 127.0.0.1:20088 127.0.0.1 20088 @ T1 127.0.0.1 10086 #增加了一个sentinel    +reset-master <instance details> -- 当master被重置时.    +slave <instance details> -- 当检测到一个slave并添加进slave列表时.    +failover-state-reconf-slaves <instance details> -- Failover状态变为reconf-slaves状态时    +failover-detected <instance details> -- 当failover发生时    +slave-reconf-sent <instance details> -- sentinel发送SLAVEOF命令把它重新配置时    +slave-reconf-inprog <instance details> -- slave被重新配置为另外一个master的slave,但数据复制还未发生时。    +slave-reconf-done <instance details> -- slave被重新配置为另外一个master的slave并且数据复制已经与master同步时。    -dup-sentinel <instance details> -- 删除指定master上的冗余sentinel时 (当一个sentinel重新启动时,可能会发生这个事件).    +sentinel <instance details> -- 当master增加了一个sentinel时。    +sdown <instance details> -- 进入SDOWN状态时;    -sdown <instance details> -- 离开SDOWN状态时。    +odown <instance details> -- 进入ODOWN状态时。    -odown <instance details> -- 离开ODOWN状态时。    +new-epoch <instance details> -- 当前配置版本被更新时。    +try-failover <instance details> -- 达到failover条件,正等待其他sentinel的选举。    +elected-leader <instance details> -- 被选举为去执行failover的时候。    +failover-state-select-slave <instance details> -- 开始要选择一个slave当选新master时。    no-good-slave <instance details> -- 没有合适的slave来担当新master    selected-slave <instance details> -- 找到了一个适合的slave来担当新master    failover-state-send-slaveof-noone <instance details> -- 当把选择为新master的slave的身份进行切换的时候。    failover-end-for-timeout <instance details> -- failover由于超时而失败时。    failover-end <instance details> -- failover成功完成时。    switch-master <master name> <oldip> <oldport> <newip> <newport> -- 当master的地址发生变化时。通常这是客户端最感兴趣的消息了。    +tilt -- 进入Tilt模式。    -tilt -- 退出Tilt模式。

美团在Redis上踩过的一些坑-目录(本人非美团)

博客地址:http://carlosfu.iteye.com/blog/2254154

0 0
原创粉丝点击