redis集群分片的主要目的是解决容量问题,一般redis每台机器的内存都设置的比较小,当然小有小的好处,比如在做备份时负担比较小,管理内存的代价小等等,集群设计根据不同业务场景可以进行如下设计:
1、数据可以进行业务分类:不同业务选用不同的redis
2、数据没办法拆分:
1)hash取模:
弊端:取模的数必须固定 %3、%4、%10 影响分布式下的扩展性
2)随机存储:
3)一致性hash:
规划环形hash环:
优点:你加节点,可以分担其他节点的压力,不会造成全局洗牌
缺点:新增节点造成一小部分数据不能命中
1)比如击穿问题出现,压到mysql查询,然后在放到缓存中。
2)去取离我最近的2个物理节点,如果两次都没有,再去数据库取,放到缓存中。
3、分片的形式:
1)直接连:
redis的连接成本很高,对server端造成的
2)采用代理:
3)采用LVS负载:
常用三种代理:twitter、predixy、cluster ;后面我们后详细演示。
4、redis分区原理:
1)直接分:
2)间接灵活分区:
比如客户端连接的是中间的节点,而某个key的hash值是4 ,此请求会在中间的节点再次hash,找到hash为4的key所在的节点。
5、实战演示 twitter predixy代理:
进入:
继续:
6、演示twitter 进入服务器:相关git链接
新建 twemproxy 目录:
下载前升级:
下载
查看:
参考:
流程:
$ git clone git@github.com:twitter/twemproxy.git
$ cd twemproxy
$ autoreconf -fvi
$ ./configure --enable-debug=full
$ make
$ src/nutcracker -h
线安装:
正式安装:
版本底,查看:
去这里镜像:
拉取:
拉到了:
查看后清除缓存:
再次下载:
继续:
然后:
继续:
然后 make命令:
查看:
步骤太多了, 总之,按照下面的文档一步一步来,很快就搭建配置好。到此分片分享完成,大家一定小详细查看文档,认真测试,下一篇我们分享补充一些常用的项目使用的API,敬请期待!