Redis发布订阅

Redis发布订阅是一种消息通信模式,发送者发送消息,订阅者接收消息。微信,微博,关注系统

Redis客户端可以订阅任意数量的频道

redis订阅中断 redis订阅发布的实际应用_redis订阅中断

通过PUBLISH命令向订阅者发送消息,redis-server会使用给定的频道作为键,在它所维护的channel字典中查找记录了订阅这个频道的所有
客户端的链表,遍历这个链表,将消息发布给所有的订阅者

pub/Sub从字面理解就是发布与订阅,在redis中,你可以设定对某一个key值进行消息发布以及消息订阅,当一个key值上进行了消息发布后,
所有订阅它的客户端都会收到相应的消息,这一功能最明显的用法就是作为实时消息
系统,比如普通的即时聊天,群聊等功能


使用场景:
1.实时消息系统
2.实时聊天
3.订阅,关注系统
稍微复杂的系统都会使用消息中间件来做!

Redis主从复制

redis订阅中断 redis订阅发布的实际应用_linux_02


主从复制,读写分离!80%的情况都是进行读操作!减缓服务器压力!架构中经常使用,一主二从,项目中不可能单机使用Redis!

环境配置
只配置从库,不配置主库!
复制三个配置文件,修改相应的信息:

1.端口
2.pid名字
3.log文件名字
4.dump.rdb名字

redis-server 配置文件路径 命令来分别启动三个服务,可以通过进程信息查询

配置一主二从
默认情况下,每台redis服务器都是主节点(使用 info replication命令查看机器主从类型);一般情况下只需要配置从机就好了!

SLAVEOF 127.0.0.1	6379 	#配置	127.0.0.1	6379这台机器为主机,当前机器为从机

在从机中查看:

redis订阅中断 redis订阅发布的实际应用_redis订阅中断_03


在主机中查看:

redis订阅中断 redis订阅发布的实际应用_redis_04

真实的主从搭建需要修改配置文件搭建,使用命名配置只是暂时的!配置如下:

replicaof 主机地址 主机端口
masterauth 主机密码(无密码则不用配置该命令)

主机可以写,从机只能读!所有主机中的信息和数据,都会被从机自动保存
主机断开连接,从机依旧是连接到主机的,但是没有写操作了,如果主机连接上了,从机依旧可以获取到主机的数据和信息
如果是使用命令行配置的主从,从机断开然后重启,就会变成主机,只要变为从机,立马可以从主机中获取数据

复制原理

redis订阅中断 redis订阅发布的实际应用_java_05


层层链路

上一个主节点链接下一个从节点,层层链接,也可以实现主从复制!

如果主机断开了连接,我们可以使用SLAVEOF no one让自己变成主机,其他的节点就可以手动连接到最新的这个节点(手动)!
如果这个时候原来的主机修复了,那就重新连接!需要手动重新设置从节点!
(以上主从复制工作中不会使用!)

(重点)哨兵模式

自动选取主节点的模式!

redis订阅中断 redis订阅发布的实际应用_java_06


哨兵的两个作用:

1.通过发送命令,让redis服务器返回监控的运行状态,包括主服务器和从服务器
2.当哨兵监测到主机宕机,会自动将从机切换到主机,然后通过发布订阅模式通知其他从机,修改配置文件,让它们切换主机。

然而一个哨兵进程对redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控,各个哨兵还可以互相进行监控,这样就形成了多哨兵模式!

redis订阅中断 redis订阅发布的实际应用_redis_07


测试:

1.配置哨兵配置文件sentinel.conf
sentinel monitor myredis 127.0.0.1 6379 1		#myredis为被监控的名字,后面这个数字1,代表如果主机挂了,从机投票让谁成为主机
2.启动哨兵(命令:redis-sentinel kconfig/sentinel.conf)

如果主机节点断开了,此时就会从从机中随机选择一个服务器(投票算法),从哨兵的日志中可以看到新主机是哪个!如果之前的主机重新连接,只能归并到新主机下当做从机!

优点:
1.哨兵集群,基于主从复制,所有的主从配置优点全都有
2.主从可以切换,故障可以转移,系统的可用性就会更好
3.哨兵模式就是主从模式的升级,手动到自动
缺点:
1.redis不好在线扩容,集群容量到达上限,扩容就很麻烦
2.实现哨兵模式配置很麻烦,里面有很多配置选择

哨兵模式的全部配置内容:

![在这里插入图片描述](,

redis订阅中断 redis订阅发布的实际应用_数据库_08


redis订阅中断 redis订阅发布的实际应用_java_09


redis订阅中断 redis订阅发布的实际应用_数据库_10