现状问题:业务发展过程中遇到的峰值瓶颈
集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果
1、 通过算法设计,计算出key应该保存的位置
2、 将所有的存储空间计划切割成16384份,每台主机保存一部分
注意:每份代表的是一个存储空间,不是一个key的保存空间
3、 将key按照计算出的结果放到对应的存储空间
当我们查找数据时,集群的操作:
cluster-enabled yes|no
cluster-config-file filename
cluster-node-timeout milliseconds
cluster-migration-barrier min_slave_number
cluster nodes
cluster replicate master-id
cluster meet ip:port
cluster forget server_id
cluster failover
redis-cli –-cluster create masterhost1:masterport1 masterhost2:masterport2 masterhost3:masterport3 [masterhostn:masterportn …] slavehost1:slaveport1 slavehost2:slaveport2 slavehost3:slaveport3 -–cluster-replicas n
注意:master与slave的数量要匹配,一个master对应n个slave,由最后的参数n决定
master与slave的匹配顺序为第一个master与前n个slave分为一组,形成主从结构
redis-cli --cluster add-node new-master-host:new-master-port now-host:now-port
redis-cli --cluster add-node new-slave-host:new-slave-port master-host:master-port --cluster-slave --cluster-master-id masterid
redis-cli --cluster del-node del-slave-host:del-slave-port del-slave-id
redis-cli --cluster reshard new-master-host:new-master:port --cluster-from src- master-id1, src-master-id2, src-master-idn --cluster-to target-master-id -- cluster-slots slots
注意:将需要参与分槽的所有masterid不分先后顺序添加到参数中,使用,分隔
指定目标得到的槽的数量,所有的槽将平均从每个来源的master处获取
redis-cli --cluster reshard src-master-host:src-master-port --cluster-from src- master-id --cluster-to target-master-id --cluster-slots slots --cluster-yes
配置conf文件
port 6501
dir "/usr/local/redis/data"
dbfilename "dump-6501.rdb"
# 启用cluster集群,加入cluster节点
cluster-enabled yes
# cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容
cluster-config-file "cluster-6501.conf"
# 节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
cluster-node-timeout 5000
三主三从的搭配,设置6个conf文件,每个文件其他配置相同,修改端口号即可。
按照redis-server redis-XX.conf 启动6台redis服务器。
1、创建集群
redis-cli --cluster create 127.0.0.1:6501 127.0.0.1:6502 127.0.0.1:6503 127.0.0.1:6504 127.0.0.1:6505 127.0.0.1:6506 --cluster-replicas 1
2、登录客户端
redis-cli -c -p 6501