Redis 模式类型 单机 主从复制 哨兵 集群

Redis 官网   
Redis 教程 | 菜鸟教程  
Redis 命令参考(红色)
Redis 命令参考(蓝色) 
Redis 数据库学习教程
ASP.NET Core 和 Redis  

1、单机版

*
2、主从模式,主从复制(redis2.8版本之前的模式)

主从模式(Master-Slave)是使用较多的一种架构。主(Master)和从(Slave)分别部署在不同的服务器上,当主节点服务器写入数据时,同时也会将数据同步至从节点服务器,通常情况下,主节点负责写入数据,而从节点负责读取数据。
Redis 主机会一直将自己的数据复制给 Redis 从机,从而实现主从同步。在这个过程中,只有master 主机可执行写命令,其他 salve 从机只能只能执行读命令,这种读写分离的模式可以大大减轻 Redis 主机的数据读取压力,从而提高了Redis 的效率,并同时提供了多个数据备份。主从模式是搭建 Redis Cluster 集群最简单的一种方式。
*
有 2 台 Redis 服务器,地址分别是 127.0.0.1:6379 和 127.0.0.1:12345
在 127.0.0.1:12345 的客户端输入命令

# 启动 Redis 命令,<port> 是具体的端口号
redis-server --port <port> 

# 使用命令在服务端搭建主从模式
redis-server --port <slave-port> --slaveof <master-ip> <master-port>
 
# 开启一个port为6300的从机,它依赖的主机port=6379
redis-server --port 6300 --slaveof 127.0.0.1 6379
 
# 在 127.0.0.1:12345 的客户端输入命令,12345是从数据库,6379是主数据库
slaveof <master ip> <master port>    # master地址,master端口
slaveof 127.0.0.1 6379
 
# 设置slave为只读模式
slave-read-only yes  

有 2 台 Redis 服务器,地址分别是 127.0.0.1:6379 和 127.0.0.1:12345
配置主节点(方式1),在 127.0.0.1:12345 的客户端输入命令

# 启动 Redis 命令,<slave-port> 是从机端口号
redis-server --port <slave-port> 

# 使用命令在服务端搭建主从模式
redis-server --port <slave-port> --slaveof <master-ip> <master-port>

# 开启一个port为6300的从机,它依赖的主机port=6379
redis-server --port 6300 --slaveof 127.0.0.1 6379

# 启用主节点
slave-serve-stale-data yes

# 设置密码(可选)
requirepass <password>

配置从节点,在 127.0.0.1:12345 的客户端输入命令

# 旧版本,在 127.0.0.1:12345 的客户端输入命令,12345是从数据库,6379是主数据库
slaveof <master ip> <master port>    # master地址,master端口
slaveof 127.0.0.1 6379

# 新版本
replicaof <master ip> <master port>    # master地址,master端口
replicaof 127.0.0.1 6379

# 旧版本,设置slave为只读模式
slave-read-only yes

# 新版本,设置slave为只读模式
replica-read-only yes

# 设置密码(如果主节点有密码)
masterauth <password>

# 取消主从复制
slaveof no one

服务器127.0.0.1:12345 将成为127.0.0.1:6379    从服务器
服务器127.0.0.1:6379   将成为127.0.0.1:12345  主服务器

3、哨兵sentinel模式(redis2.8及之后的模式)

哨兵(sentinel)是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。

哨兵模式是一种自动选择老大的模式,即在老大宕机之后,哨兵模式会根据哨兵们的内部投票,自动的重新选出一个新的老大。
注意:配置sentinel之前需先建立master-slave replication

哨兵的作用 
● 监控
          不断的检查master和slave是否正常运行
          master存活检测、master与slave运行情况检测
● 通知(提醒)
          当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知
● 自动故障转移
          断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址
注意:哨兵也是一台redis服务器,只是不提供数据服务,通常哨兵配置数量为单数

哨兵工作原理【其实就是主从同步】
阶段一:监控阶段,用于同步各个节点的状态信息,sentinel会向master、slave以及其他sentinel获取状态,sentinel直接会组件“对应频道”,大家一起发布消息、订阅消息,收消息,同步信息等;
阶段二:通知,保持联通;
阶段三:故障转移,发现问题,竞选负责人,优选新master,新master上任,其他slave切换master,原master座位slave故障回复后连接;

● 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
● 当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
● 一般情况下,至少会需要3~5个哨兵对redis 进行监控,我们可以通过修改端口启动多个sentinel 服务。

总结
● 将宕机的master下线                                        ● 谁来确认master宕机了
● 找一个slave作为master                                   ● 找一个主?怎么找法?
● 通知所有的slave连接新的master                     ● 修改配置后,原始的主恢复了怎么办?
● 启动新的master与slave
● 全量复制*N+部分复制*N
*
*
*
*
哨兵配置文件sentinel.conf 

# 指示 Sentinel 去监视一个名为 mymaster 的主服务器
# sentinel monitor <master-name> <ip> <redis-port> <quorum>
# master-name:只能包含英文字母,数字,和“.-_”这三个字符
# master-ip:要写真实的ip地址而不要用回环地址(127.0.0.1)
# redis-port:redis端口号
# quorum:是一个数字,指明当有多少个sentinel认为一个master失效时,master才算真正失效。
sentinel monitor mymaster 192.168.1.183 6379 2    #名称、#ip、#端口、#投票选举次数


# 如果被监控的主机redis服务器有密码的话,还有在sentinel.conf文件中加上认证密码
# sentinel auth-pass <master-name> password
sentinel auth-pass mymaster 123456


# 默认1s检测1次,这里配置超时5000毫秒为宕机
sentinel down-after-millliseconds mymaster 5000


# 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移
sentinel failover-timeout mymaster 180000

# 在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长
sentinel parallel-syncs mymaster 1

sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5

主观下线 和 客观下线
主观下线(Subjectively Down, 简称 SDOWN)指的是单个 Sentinel 实例对服务器做出的下线判断。
客观下线(Objectively Down, 简称 ODOWN)指的是多个 Sentinel 实例在对同一个服务器做出 SDOWN 判断, 并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后, 得出的服务器下线判断。(一个 Sentinel 可以通过向另一个 Sentinel 发送 SENTINEL is-master-down-by-addr 命令来询问对方是否认为给定的服务器已下线。)
● 投票选举 所有 Sentinel 节点会通过投票机制,按照谁发现谁去处理的原则;
*
4、集群(proxy型)

*
*
*
5、集群(直连型)

*
*
*
redis cluster模式(redis3.0版本之后)
*
*
*
*
ServerStack.Redis
*

*
*
*

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值