pub/sub
简介
简单命令
subscribe(订阅)publish(发布)
单机伪集群
前置:何谓主从复制
- 详情
- master 节点提供数据,也就是写。slave 节点负责读。不是说master 分支不能读数据,也能只是我们希望将读写进行分离。slave 是不能写数据的,只能处理读请求
- 默认情况下(没配置主从时),每一台Redis服务器都是主节点
搭建伪集群
- 先在配置文件目录下,复制配置文件。log文件操作类似
cp redis.conf redis80.conf # 创建6380端的
cp redis.conf redis81.conf # 创建6381端的
- 所需文件如下:
- 清空log文件内容
>redis_log80.log
>redis_log81.log
- 修改配置文件(以6380 端为例,其他两个类似)
- 启动它们
cd /usr/local/bin
sudo redis-server redis-config/redis80.conf # 其他两个Redis服务类似
redis-cli -p 6380
- 最终(3个Redis开起来)
ps -ef|grep redis查看进程
配置master/slave(一主二从)
3个cli先开启
选6379为master(slaveof)
去master查看信息(info replication)
关于永久主从配置
- 在配置文件中修改
测试
正常情况
异常情况
- 主机断开连接,从机依旧连接到主机的,但是没有写操作,这个时候,主机如果回来了,从机依旧可以直接获取到主机写的信息!
-** 如果是使用命令行**,来配置的主从,这个时候如果重启了,就会变回主机!只要变为从机,立马就会从主机中获取值!(在从机关闭期间,主机进行的写操作,从机复活后可以获取)
复制原理
- 详解
- Slave启动成功连接到master后会发送一个sync同步命令
- Master接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。
全量复制︰
- slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
增量复制:
- Master继续将新的所有收集到的修改命令依次传给slave,完成同步但是只要是重新连接master,一次完全同步(全量复制)将被自动执行!