1、为什么要搭建Redis集群
Redis 集群能够提供高可用性、高性能、扩展性和数据安全性,适用于各种需要高速缓存和数据存储的复杂应用场景
2、Redis的集群模式
- 主从模式
- 哨兵模式
- 区中心化模式
3、主从模式
redis主从模式表示一个主节点跟若干个从节点。主节点可以负责写操作和读操作。而从节点只负责读操作。主节点的数据会自动同步到所有的从节点上。
3.1、如何搭建主从模式
- 修改端口号的名称
- 修改dump文件的名称
- aof的名称
3.2、开启redis服务命令
redis-server redisxx.conf
3.3、客户端连接redis
redis-cli -h ip地址 -p 端口号
3.4、配置主从关系
配从不配主 slaveof 主节点IP 主节点的端口号port
info replication 查看主从的状态
主从模式的缺点: 当主机宕机不会自动选举master节点。导致一旦主机宕机就无法进行写操作。当从机宕机恢复之后需要从新配置 slaveof 主节点IP 主节点的端口号port
4、哨兵模式
为了解决主从模式的缺陷:当主节点宕机之后,从节点无法直接上位。
注意:搭建哨兵服务时尽量搭建奇数个
4.1哨兵工作原理
4.2、配置哨兵
修改sentinel.conf文件
4.3、启动哨兵服务
redis-sentinel sentinel-conf
当主机宕机之后,会自动选举主机
当主机恢复后会变成从机
4.4选举机制
优先级在redis.conf中默认:replica-priority 100,值越小优先级越高
偏移量是指获得原主机数据最全的
每个redis实例启动后都会随机生成一个40位的runid
4.5、哨兵模式的优缺点
优点:保证了高可用,哨兵监控各个节点实现自动故障迁移
缺点:主机宕机之后主从的切换需要时间,切换期间不能对外提供服务,没有解决master写的压力
5、去中心化模式
redis集群中内置了16384个哈希槽,当然需要在Redis集群中放置一个key-value时,redis先对key使用crc16算法算出一个整数结果,然后把结果对16384求余,这样每个key都会对应一个编号0~16384之间的哈希槽,redis会根据节点数量大致均等的将哈希槽映射到不同的节点
当你往Redis Cluster中加入 key时,会根据crc16(key) mod 16384计算这个key应该分布到那个hash slot中,一个hash slot中会有很多key和value。也可以理解为表的分区,使用单节点时的redis只有一个表,所有的key都放在这个表里;改用redis cluster以后会自动升高16384个分区表,当添加(insert)数据时会根据上面的简单算法来决定key应该存在那个分区,每个分区有多少key
启动集群
redis-server redisxxx.conf
查看启动的redis
分配槽以及主从关系
redis-cli --cluster create --cluster-replicas 1 172.16.7.140:7001 172.16.7.140:7002 172.16.7.140:7003 172.16.7.140:7004 172.16.7.140:7005 172.16.7.140:7006