Redis之cluster集群

目录

  • Redis之cluster集群
    • 1.集群介绍
    • 2.集群作用
    • 3.集群数据存储设计
    • 4.集群内部通讯设计
    • 5.集群搭建方式
    • 6.cluster配置
    • 7.cluster节点操作命令
    • 8.redis-trib命令

Redis之cluster集群

1.集群介绍

集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果

Redis之cluster集群_第1张图片

Redis之cluster集群_第2张图片

2.集群作用

1.分散单台服务器的访问压力,实现负载均衡
2.分散单台服务器的存储压力,实现可扩展性
3.降低单台服务器宕机带来的业务灾难

3.集群数据存储设计

%16384是取模运算
如果又添加了一个服务器,或者有一个服务器突然宕机了,怎么办?

Redis之cluster集群_第3张图片

37所在的小方框叫作”槽“

Redis之cluster集群_第4张图片

如果现在又添加了一个服务器,或者有一个服务器突然宕机了,怎么办?
如下举例是3个服务器,又添加了一个服务器,变成了4个,则其他三个服务器每人掏出来一部分key给新来的服务器,进行优化。
所谓的增添节点与去节点其实是改变槽所存储的位置

Redis之cluster集群_第5张图片

4.集群内部通讯设计

1.加入现在有客户端进行访问数据库,进行key的查找,key被经过两个算法计算以后,得到key对应的存储槽的位置,假如计算的结果是A里面的35号槽,如果一次命中的话就直接返回,没有命中的话,35号槽会根据这个key进行查找,告诉客户端是在B那个槽里面,客户端会再去B里面的槽进行查找(注意:不是A去查找,是客户端再去查找,避免客户端自己多次去别的地方自己一个个挨着找)
2.最多两次即可命中
注意:各个数据库里面的槽的编号不一定是连续的,是散的

Redis之cluster集群_第6张图片

5.集群搭建方式

1.原生安装(单条命令)
1)配置服务器(3主3从)
2)建立通信(Meet)
3)分槽(Slot)
4)搭建主从(master-slave)
2.工具安装(批处理)

6.cluster配置

1.cluster-enabled yes|no
把该服务器添加为节点
2.cluster-config-file
cluster配置文件名,该文件属于自动生成。
如果我们给指定名字的话,会自动生成该指定名字的cluster-config-file ;
如果我们给未指定名字的话,会自动生成一个默认名字的cluster-config-file ;
举例:cluster-config-file nodes-6379.conf
仅用于快速查找文件并查询文件内容。
(注:我们尽量给指定名字,因为在大量节点的情况下默认生成的cluster-config-file文件名字都一样,容易混淆)
3.cluster-node-timeout
节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
4.cluster-migration-barrier
master连接的slave最小数量

7.cluster节点操作命令

1.查看集群节点信息

cluster nodes

2.进入一个从节点 redis,切换其主节点

cluster replicate <master-id>

3.发现一个新节点,新增主节点

cluster meet ip:port

4.忽略一个没有solt的节点

cluster forget <id>

5.手动故障转移

cluster failover

8.redis-trib命令

redis-trib相当于一个脚本,把cluster的一些命令进行优化,实际中用cluster自带的命令或者redis-trib命令都可以

1.添加节点

redis-trib.rb add-node

2.删除节点

redis-trib.rb del-node

3.重新分片

redis-trib.rb reshard

你可能感兴趣的:(Redis,redis,数据库,java)