干货:秒懂redis集群

集群

            redis3.0后开始支持Cluster(集群)模式,目前redis的集群支持节点的自动发现,支持slave-master选举和容错,支持在线分片(sharding shard)等特性 reshard

2 集群细节

- 所有的redis彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽
- 节点的fail是通过集群中超过半数的节点检测失效时才生效的 【所以约定俗成节点数量为奇数】
- 客户端与redis节点直连,不需要中间proxy层,客户端不需要连接集群中所有节点,连接集群中任何一个节点即可
- redis-cluster把所有的物理节点映射到【0-16383slot上,cluster负责维护 node<->slot<->value

3 集群环境搭建

            判断一个集群中的节点是否可用,是集群中的所有主节点选举过程,如果半数以上的节点认为当前节点挂掉,那么当前节点就是挂掉了,所以搭建redis集群时最好为奇数。搭建集群至少需要三个主节点,三个从节点。至少需要六个节点

# 1.准备环境安装ruby以及redis集群依赖
- yum install -y ruby rybygems
- gem install redis-xx.gem(gem文件名)

# 3.每个目录复制一份配置文件,用来模拟多个服务器
# 4.修改不同配置文件的配置
- bind 0.0.0.0 //开启远程连接
- port //修改端口
- appendonly yes //aof持久化
- cluster-enabled yes //开启集群模式
- cluster-config-file nodes-port.conf //集群节点配置文件
- cluster-node-timeout 5000 //集群节点超时时间


# 5.制定不同配置文件启动七个节点(模拟七个服务器)

# 6.查看进程

1.创建集群

扫描二维码关注公众号,回复: 14529187 查看本文章

# 1.复制集群操作脚本到bin目录中
- cp redis-4.0.10/src/redis-trib.rb /usr/redis/bin/

# 2,创建集群
- 【标准】 ./redis-trib.rb create --replicas 1 ip:port ip:port
- 【案例】 ./redis-trib.rb create --replicas 1 192.168.75.210:7000 192.168.75.210:7001 192.168.75.210:7002 192.168.75.210:7003 192.168.75.210:7004 192.168.75.210:7005

2.查看集群状态

# 1.查看集群状态 check
- 【标准】 ./redis-trib.rb check 任意集群节点ip:port
- 【例子】 ./redis-trib.rb check 192.168.75.210:7002
# 2.客户端连接集群
- ./redis-cli -p 7000 -c
- 主节点
   主节点存在hash slots,且主节点hash slots没有交叉
   主节点不能删除 【删除后hash槽就不完整了】
   一个主节点可以有多个从节点
   主节点宕机时多个从节点选举主节点
   
- 从节点
从节点没有hash slots
从节点可以删除
从节点不负责数据的写入,只负责数据地同步

3.添加主节点

# 1.添加主节点 add-node 【新加入节点/任意原始节点的位置】
- ./redis-trib.rb add-node 192.168.75.210:7006 192.168.75.210:7000
- 注意:
1.该节点必须以集群模式启动
2.默认情况下该节点是以master节点形式添加的

4.添加从节点

# 1.添加从节点 add-node --slave [新加入节点][集群中任意节点]
- /redis-trib.rb add-node --slave 192.168.75.210:7006 192.168.75.210:7000
- 注意:
当添加副本节点时,没有指定主节点,redis会随机给副本节点较少的主节点添加当前副本节点
# 2.为确定的master节点添加主节点 add-node --slave --master-id master节点id [新加入节点] [集群中任意节点]
- ./redis-trib.rb add-node --slave --master-id 0753fea22db69a438dc0379ed04d8ac6c14b0216   192.168.75.210:7006 192.168.75.210:7001

5.删除副本节点

# 1.删除节点 del-node [集群中任意节点][删除节点id]
- ./redis-trib.rb del-node 192.168.75.210:7000 4a8e562bf6cd536e2c4655546..
- 注意:被删除的节点必须是从节点或者没有被分配hash slots的主节点

6.集群的在线分片

# 1.在线分片 reshard 【集群中任意节点】
- ./redis-trib.rb reshard 192.168.75.210:7000

7.springboot中操作redis集群

spring.redis.cluster.nodes=192.168.75.210:7000,192.168.75.210:7001,192.168.75.210:7002,192.168.75.210:7003,192.168.75.210:7004,192.168.75.210:7005,192.168.75.210:7006

猜你喜欢

转载自blog.csdn.net/m0_66194642/article/details/127011222