主从和集群配置
主从架构
主节点负责读和写, 从节点只负责读
从节点配置:
replicaof 主节点IP 主节点端口号进入
Redis客户端之后, 就可以查看主从的配置信息
哨兵
如果主节点突然挂掉后(即单点故障), 这个时候就需要用到哨兵机制
在开启
Redis的同时, 还会再次开启一个哨兵, 当主节点Redis挂掉之后, 主节点的哨兵会结合从节点的哨兵进行一次投票, 在剩余的从节点中选出来一个Redis节点来当主节点配置如下:
配置文件名字是
sentinel.conf# 表示哨兵在后台启动 daemonize yes # 指定 master 节点的 IP 和端口号(在主节点的 sentinel.conf 中配置下面内容) sentinel monitor master节点名称(自己起的) localhost master节点的端口号 从节点的个数 # 指定 master 节点的 IP 和端口号(在从节点的 sentinel.conf 中配置下面内容) sentinel monitor master节点名称(自己起的) master节点的IP master节点的端口号 从节点的个数 # 哨兵每隔多久监听一次 Redis 架构, 单位是毫秒 sentinel down-after-milliseconds 上面起的 master 节点的名称 30000启动哨兵
redis-sentinel 哨兵的配置文件
集群
Redis集群在保证主从+哨兵的基本功能之外, 还能够提升Redis存储数据的能力-Redis集群是无中心的, 即没有主从Redis集群之间有一个ping-pang机制, 即Redis1给Redis2发了一个ping, 那么Redis2会给Redis1返回一个pangRedis集群的节点数量必须是2n+1个, 因为会有一个投票机制, 例如:当
Redis1给Redis2发送消息后, 没有收到Redis2的回复, 此时Redis1并不知道到底是自己挂掉还是Redis2挂掉这个时候,
Redis1会去找Redis3, 让Redis3再联系一下Redis2, 看一下到底是谁的问题正因为这个投票机制, 所以集群节点的个数就必须是奇数个, 不能是偶数
Redis集群中默认分配了 16384 个hash槽, 在存储数据的时候, 会对key进行crc16算法, 并对 16384 进行取余, 根据最终的结果, 将key和value放到对应的节点中每一个
Redis集群都维护着相应的hash槽为了保证数据的安全性, 集群的每一个节点, 都会有一个从节点, 这个从节点并不做读操作, 当集群的节点进行了写操作后, 他们对应的从节点也会进行相应的写操作, 当集群的节点挂掉后, 对应的从节点会立即上位
可以单独针对集群中的某一个节点搭建主从架构从而来进一步提高查询效率
当集群中超过半数的节点挂掉后, 整个
Redis集群就会挂掉
- 在
Redis中的配置如下:# 指定端口号 port 端口号 # 开启 Redis 集群 cluster-enabled yes # 集群的信息文件 (文件名可以自定义) cluster-config-file nodes-6379.conf # 集群的对外IP地址 cluster-announce-ip IP地址, 可以写虚拟机的IP # 集群对外的port cluster-announce-port 端口号,即上面指定的端口号 # 集群的总线端口号 cluster-announce-bus-port 一般是 1 + 上面指定的端口号 - 启动
Redis服务之后, 随便进入一个Redis客户端, 用以下命令进入:redis-cli --cluster create 所有节点的ip:端口号(每个节点之间用空格隔开) --cluster-replicas 1 (最后的1表示的意思是每一个节点后面有一个从节点) Redis集群在启动的时候, 一定要保证Redis中没有任何持久化数据
Redis 学习笔记
关于 LearnKu
推荐文章: