redis的发布订阅:
进程间的一种消息通信模式:发送者pub发送消息,订阅者sub接受消息
命令:
先订阅后发布后才能收到消息
- 可以一次性订阅多个 subscribe c1 c2 c3
- 消息发布,publish c2 hello-redis
- 订阅多个 通配符* psubscribe new*
- 收取消息 publish new1 redis2015
Redis的复制(即 主从复制)
1. 是什么?
主从复制:主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主
2. 能干嘛?
- 读写分离
- 容灾备份
3. 如何使用
1.、配从 不配主
2、 从库配置:slaveof 主库IP 主库端口
3、修改配置文件细节操作
- 拷贝多个redis.conf文件
- 开启daemonize yes
- Pid文件名字
- 指定端口
- Log文件名字
- Dump.rdb名字
4、 常用主从复制的三种
- 一主二仆 :一 master ,两个slave,master 挂了,slave 依旧原地等待,直到master修复
- 薪火相传:一个master一个salve,前一个slave作为下个slave的master ,类似火车车厢。
- 反客为主:一master挂多slave,master挂了之后,选择其中一个slave 设置 slaveof no one,该 slave会变成master。然后将其他的slave重新设置到新的master。
复制原理
- slave 启动成功连接到master后会发送一个sync命令
- Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,master将传送整个数据文件到slave,以完成一次完全同步。
- 全量复制:slave服务在接收到数据库文件数据后,将其存盘并加载到内存中
- 增量复制:Master继续将新的所有收集到的修改命令依次传递给slave,完成同步
- 但是只要是重新连接master,依次完全同步将被自动执行
哨兵模式
反客为主的自动版
有个monitor在后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。
使用步骤:
启动哨兵的过程:
- touch sentinel.conf 创建新文件,sentinet.conf 名字不能错。
- 编辑sentinel.conf文件
sentinel monitor 数据库名字 127.0.0.1 6379 1 表示如果主机死了,剩下的从机谁投票超过1票以上谁当主机 - 启动sentinel :redis-sentinel /myredis/sentinel.conf
一组sentinel可以监控多个master
复制的缺点
由于所有的写都在master上面,然后同步更新到slave,所以从master同步到slave机器都有一定的延时,当系统很繁忙的时候,延迟问题会更加严重,slave机器数据增加也会使得这个问题更加严重