Redis Cluster

  • 它是Redis的分布式解决方案,在Redis 3.0版本正式推出的,有效解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构达到负载均衡的目的。
  • 数据分布理论: 分布式数据库首要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整个数据的一个子集。常见的分区规则有哈希分区和顺序分区。Redis Cluster采用哈希分区规则,因此接下来会讨论哈希分区规则。
  • 常见的哈希分区有以下几种: 节点取余分区;一致性哈希分区;虚拟槽分区

顺序分区

  • 可以顺序访问
  • 数据分散,容易倾斜
  • 举例:HBase和bigtable

哈希分布

节点取余

  • 数据节点关系变化很大,导致数据迁移,迁移的数量和添加节点有关
  • 最好翻倍扩容

一致性哈希分区

  • 只影响相邻节点,但还是会有数据迁移

redis采用的虚拟槽分区

  • 每一个槽都会映射一个数据子集
  • key会根据CRC16(哈希函数)来计算槽范围

redis集群功能限制

  • key批量操作支持有限。如:MSET``MGET,目前只支持具有相同slot值的key执行批量操作
  • key事务操作支持有限。支持多key在同一节点上的事务操作,不支持分布在多个节点的事务功能
  • key作为数据分区的最小粒度,因此不能将一个大的键值对象映射到不同的节点。如:hash、list
  • 不支持多数据库空间。单机下Redis支持16个数据库,集群模式下只能使用一个数据库空间,即db 0

集群安装 配置

  • 需要最少六台redis节点,其中三台用来设置槽的范围(6380、6381、6382),其余三台用于Redis cluster(638{3-5})
  • 6380,6381,6382作为主节点,6383,6384,6385作为从节点
  • 和以往操作一样,新建一个文件夹,mkdir cluster作为集群安装的基础文件夹,在里面以端口进行文件夹的创建
  • mkdir -pv {6380,6381,6382,6383,6384,6385}/{conf,data,logs}以端口建文件夹,以及对应的conf、data和logs配套文件夹
  • 在6380的文件夹下的conf文件夹下,新建redis.conf文件,输入的内容如下
daemonize yespidfile /usr/local/redis-4.0.14/cluster/6380/redis.pidport 6380loglevel noticeprotected-mode nologfile "/usr/local/redis-4.0.14/cluster/6380/logs/redis.log"dir /usr/local/redis-4.0.14/cluster/6380/data## 集群模式配置cluster-enabled yescluster-node-timeout 15000cluster-config-file /usr/local/redis-4.0.14/cluster/6380/nodes.conf
  • 将其拷贝到其余的集群文件所对应的文件夹下,cp 6380/conf/redis.conf 6381/conf/,此刻是在cluster的文件目录内进行此操作
  • 将redis.conf里面的端口信息使用命令进行修改,别的不需要改变,sed -i 's/6380/6381/g' 6381/conf/redis.conf,以上的两个操作适用于全部的端口文件
  • 在src目录下,启动所有的集群服务redis-server /usr/local/redis-4.0.14/cluster/6380/conf/redis.conf,其余的类似
  • 使用命令查看状态ps -ef|grep redis,可以看到,redis的后年会标有【cluster】的标志
  • 使用命令,连接到6380接口,redis-cli -p 6380
  • 使用info命令查看相关信息,在redis-cli里面进行操作
  • CLUSTER nodes查看集群的节点,前面的字符串是集群ID,在redis-cli里面进行操作
  • cluster meet 192.168.33.130 6381,将其余的节点加入到集群中,在redis-cli里面进行操作
  • 给每一个集群的节点分配槽,使用命令redis-cli -p 6380 cluster addslots {0..5461},需要退出redis-cli进行操作
  • redis-cli -p 6381 cluster addslots {5462..10922}
  • redis-cli -p 6382 cluster addslots {10923..16383}

  • 将6383作为6380的从节点,redis-cli -p 6383 cluster replicate 6380的序列号
  • 同理将6384和6385配置成为6381和6382的从节点
  • 可以使用ruby可以简化集群配置的流程

集群模式的要求

  • 安装ruby(大于2.2.2)
  • 安装redis 集群配置
  • 安装gem
  • 安装ruby的redis包
  • redis-trib.rb构建集群

Redis Cluster集群模式相关推荐

  1. Redis Cluster 集群模式原理和动态扩容

    Redis Cluster原理 详细参考 Redis cluster集群模式的原理, 在这里补充下要点 16384个slot, 平均分布在各个master, key-value 对存储在slot中; ...

  2. redis cluster集群模式简述

    前言 redis最开始使用主从模式做集群,若master宕机需要手动配置slave转为master:后来为了高可用提出来哨兵模式,该模式下有一个哨兵监视master和slave,若master宕机可自 ...

  3. [Java工程师面试精选]Redis cluster集群模式的原理

    redis cluster redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求 自动将数据进行分片,每个master上放一部分数据 提供内 ...

  4. redis cluster集群模式总结

    2019独角兽企业重金招聘Python工程师标准>>> Redis集群介绍 Redis 集群是一个提供在多个Redis间节点间共享数据的程序集. Redis集群并不支持处理多个key ...

  5. Redis cluster集群模式的原理

    redis cluster redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求 自动将数据进行分片,每个master上放一部分数据 提供内 ...

  6. 【Redis】Redis高可用之Redis Cluster集群模式详解(Redis专栏启动)

  7. Ubuntu 16.04下Redis Cluster集群搭建(官方原始方案)

    前提:先安装好Redis,参考:http://www.cnblogs.com/EasonJim/p/7599941.html 说明:Redis Cluster集群模式可以做到动态增加节点和下线节点,使 ...

  8. reids 5.0.4 cluster集群模式部署实操。

    一.准备工作 5.0.4的redis压缩包,可以自行去官网下载. linux环境 二.解压并且安装 1.新建6个文件夹用于安装redis目录 目录路径为/root/tools/7001 [root@m ...

  9. 【故障演练】 Redis Cluster集群,当master宕机,主从切换,客户端报错 timed out

    大家好,我是Tom哥 性能不够,缓存来凑 一个高并发系统肯定少不了缓存的身影,为了保证缓存服务的高可用,我们通常采用 Redis Cluster 集群模式. 描述: 集群部署采用了 3主3从 拓扑结构 ...

最新文章

  1. 如何使用十进制range()步长值?
  2. js调用html5cookie,CSS+JS+Cookie实现页脚固定广告展示
  3. 万能的Entry,两个变量的Model/JavaBean再也不用写了!
  4. swift html转义,swift中webview的URL带中文或者特殊字符的处理
  5. linux mount命令衔接,Linux mount命令详解:挂载Linux系统外的文件
  6. python raise语句_Python异常处理,告别xxxxError!
  7. 8cm等于多少像素_没诚意!红米Note 8 4800万像素是假的?网友:看看realme Q吧
  8. 中小学生Python课应该学什么
  9. 2020身高体重标准表儿童_2020上海1-12岁男女孩最新身高标准表,你家孩子达标了吗?...
  10. 《高可用架构·中国初创故事(第3期)》一1.4 认同企业文化
  11. bzoj 1858: [Scoi2010]序列操作
  12. python调用flask接口实例化_常用业务接口界面化 in python flask
  13. 斐讯K2 A6版SZU校园网刷机方法
  14. 【英语语法入门】 第14讲 副词
  15. MySQL 全文索引 FULLTEXT INDEX
  16. java常用英语单词大全
  17. 后门攻击阅读笔记,Input-aware dynamic backdoor attack
  18. 同步发电机 有功功率 无功功率调节
  19. 全国计算机等级考试.pdf,全国计算机等级考试试题49662.pdf
  20. 数据库的基本概念与组成

热门文章

  1. 【转】Dicom 学习笔记-Dicom 消息服务(DIMSE-C/DIMSE-N)
  2. 【转】ABP源码分析二十九:ABP.MongoDb
  3. 【转】使用PowerApps快速构建基于主题的轻业务应用 —— 进阶篇
  4. ABP入门系列(10)——扩展AbpSession
  5. java weka 聚类_简单开源数据挖掘工具weka进行文本聚类
  6. 【LightOJ - 1027】A Dangerous Maze(概率dp,数学期望)
  7. 【EOJ Monthly 2019.02 - F】方差(数学,前缀和,积的前缀和)
  8. 【CodeForces - 1062C】Banh-mi (贪心,数学,找规律,快速幂)
  9. 【牛客 - 368C】流星雨(概率dp,乘法逆元)
  10. 【CodeForces - 761B】Dasha and friends (思维,模拟,构造)