2019.08
19
redis-cluster
一,为什么要用redis-cluster
1.并发问题
redis官方生成可以达到 10万/每秒,每秒执行10万条命令
假如业务需要每秒100万的命令执行呢?
2.数据量太大
一台服务器内存正常是16~256G,假如你的业务需要500G内存,你怎么办?解决方案如下
- 配置一个超级牛逼的计算机,超大内存,超强cpu,但是问题是。。。。
2.正确的应该是考虑分布式,加机器,把数据分到不同的位置,分摊集中式的压力
二,客户端分片
redis实例集群主要思想是将redis数据的key进行散列,通过hash函数特定的key会映射到指定的redis节点上
数据分布
顺序分区
哈希分区(redis-cluster用的是哈希分区)
节点取余
计算示例
节点 0 1 2
对1到6取余
1 1/3 =1 对应 节点1
2 2/3 =2 对应 节点2
3 3/3 =0 对应 节点0
4 4/3 =1
5 5/3 = 2
6 6/3 = 0
例如按照节点取余的方式,分三个节点
1~100的数据对3取余,可以分为三类
- 余数为0
- 余数为1
- 余数为2
那么同样的分4个节点就是hash(key)%4
节点取余的优点是简单,客户端分片直接是哈希+取余
一致性哈希
客户端进行分片,哈希+顺时针取余
是个封闭 环
虚拟槽分区
每一个数据的键被哈希函数映射到一个槽位,redis-cluster规定一共有16384个槽位
三,搭建集群
单机模式
分布式架构
分布式架构
多个服务端,负责读写,彼此通信,redis指定了16384个槽,ruby的脚本自动就把分配槽位这事做了
文章出自:CCIE那点事 http://www.jdccie.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。
本文标题:redis-cluster
本文链接:http://www.jdccie.com/?p=4190转载请注明转自CCIE那点事
如果喜欢:点此订阅本站
下篇文章:DDL/DML/DCL区别概述
暂时还木有人评论,坐等沙发!