Redis 发布/订阅和单机伪集群(主从复制)

495 阅读2分钟

pub/sub

简介

image.png

简单命令

  • subscribe(订阅)
  • publish (发布)

image.png

单机伪集群

前置:何谓主从复制

  • 详情
  • master 节点提供数据,也就是。slave 节点负责。不是说master 分支不能读数据,也能只是我们希望将读写进行分离。slave 是不能写数据的,只能处理读请求
  • 默认情况下(没配置主从时),每一台Redis服务器都是主节点

搭建伪集群

  • 先在配置文件目录下,复制配置文件。log文件操作类似
cp redis.conf redis80.conf  # 创建6380端的
cp redis.conf redis81.conf  # 创建6381端的
  • 所需文件如下:

image.png

  • 清空log文件内容
>redis_log80.log
>redis_log81.log
  • 修改配置文件(以6380 端为例,其他两个类似)

image.png

  • 启动它们
cd /usr/local/bin
sudo redis-server redis-config/redis80.conf   # 其他两个Redis服务类似
redis-cli -p 6380
  • 最终(3个Redis开起来)

ps -ef|grep redis查看进程

image.png

配置master/slave(一主二从)

3个cli先开启

image.png

选6379为master(slaveof

image.png

去master查看信息(info replication

image.png

关于永久主从配置

  • 在配置文件中修改

image.png

测试

正常情况

image.png

异常情况

  • 主机断开连接,从机依旧连接到主机的,但是没有写操作,这个时候,主机如果回来了,从机依旧可以直接获取到主机写的信息!

-** 如果是使用命令行**,来配置的主从,这个时候如果重启了,就会变回主机!只要变为从机,立马就会从主机中获取值!(在从机关闭期间,主机进行的写操作,从机复活后可以获取)

复制原理

  • 详解
  • Slave启动成功连接到master后会发送一个sync同步命令
  • Master接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。

全量复制︰

  • slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

增量复制:

  • Master继续将新的所有收集到的修改命令依次传给slave,完成同步但是只要是重新连接master,一次完全同步(全量复制)将被自动执行!