主从模式(Master & slave)
1.主从模式就是主从复制,可以将主服务器和从服务器数据进行同步,主服务器负责写入,从服务器主要读取为主不能写入
特点:
a.数据副本: 多一份数据备份,保证redis 高可用
b.扩展性能: 容量 带宽都会得到提升
c.读写分离
d.一个主服务器master可以对应多个从服务器slave一个从服务器只能对应一个主服务器
数据流向是单向的 从主写到从
2.如何搭建主从模式: 1台master 2台从slave
a. 首先准备三个redis配置文件
b. 主服务器配置文件跟原来一致
c. 从服务器配置也跟一致但是关联主服务器
主服务配置
从服务器配置 跟主一样 需要外加一个指令
测试:
开启三台redis 服务器
redis-server redis-6666.conf
redis-server redis-6667.conf
redis-server redis-6668.conf
可以通过
redis-cli -h ip地址 -p 端口号 info replication 查看主从信息
搭建好主从 ,如果从服务器宕机 ,数据不会丢失,后期得操作也不会有任何影响如果主服务器宕机 ,数据库不会丢失,但是后期得操作不能进行写入 ,后期只能通过程序员 输入指令 让从服务器升为主服务器
哨兵模式
由于主从这么多问题,主服务器如果宕机,需要程序员接入手动将从升主服务器,这个操作提要提供人力,所以redis 2.8 版本以后引入了哨兵模式. 其实哨兵模式也是主从模式,就是主从模式的强化版, 只是在主从@的基础上添加了哨兵机制
哨兵模型1:
原型2 : 就是两个哨兵
原型3:
所以说一般2台服务器 1个主 1 个从 至少需要3个哨兵因为哨兵 将从升主的机制不同,只有超过半数(50%)的哨兵认为该从服务器有资格晋升主服务器才会执行
测试:
来模拟 模型3:1台主 1台从 3个哨兵主从服务器配置跟上面一致添加哨兵即可
哨兵配置
port 端口号
sentinel monitor mymaster 主 ip地址
daemonize yes
配置好之后启动:
先启动 主服务器 再启动从服务器
redis-server redis-6666.conf ---------主
redis-server redis-6667.conf ---------从
最后启动哨兵
redis-sentinel sentinel-26666.conf ----启动哨兵
redis-sentinel sentinel-26667.conf ----启动哨兵
redis-sentinel sentinel-26668.conf ----启动哨兵
redis 集群模式(cluster)
哨兵模式已经可以解决绝大部分的问题,但是为了保证redis高可用,容量的问题,内存是无法扩充的 特别是并发量较高时 redis号称支持10万并发量, 着时候可以适用redis 集群 给redis增加redis节点, 集群可以最大支持1000节点,性能也会随着节点越多从而得到提升相当于 多个主从模式。
redis-cluster 组成
a. master 主服务器(主节点) 有多个
b. slave 从服务器(从节点) 多个从对应1个主
c. slot 槽点(数据分槽) 一共有16384个数据分槽,分布再集群所有的主节点上集群的每个主节点会管理一部分数据分槽,每个数据分槽会存放不同的数据,这样每个服务器容量的问题就解决了同时 每个主节点可以对应多个从节点(类似于主从),如果主节点宕机 从节点会自动升为主节点(类似于哨兵)
搭建redis集群 :
1. 准备 创建6个节点 (3个主 3个从)
2. 准备6个redis集群配置文件可以拷贝原来的redis.conf 最后外加三行
开启redis 6个节点服务器
redis-server cluster-6000.conf
... 6个全部启动
redis.server cluster-6006.conf
如果节点越多 需要开启的服务器的指令就越多可以通过linux脚本 ,写一个循环去实现循环开启
redis服务器
开启成功之后 6个节点启动 ,在进行自动分配槽点
创建集群的主从节点
redis-cli --cluster create
192.168.190.200:6000
192.168.190.200:6001
192.168.190.200:6002
192.168.190.200:6003
192.168.190.200:6004
192.168.190.200:6005 --cluster-replicas 1
这里的1 是 表示每个主节点 需要1个从节点