redis集群:

  redis集群是高可用的一种体现,让整个redis圈更加稳定,不易出现宕机的情况,

redis原理:

  redis3.0之前是不支持集群的,实现集群要自己去配置实现,很麻烦,在3.0之后就支持了

  原理图:借助网上很火的一张图

    

    

  这个图中,每一个蓝色的圈都代表着一个redis的服务器节点。它们任何两个节点之间都是相互连通的。客户端可以与任何一个节点相连接,然后就可以访问集群中的任何一个节点。对其进行存取和其他操作。

  那么redis是怎么做到的呢?首先,在redis的每一个节点上,都有这么两个东西,一个是插槽(slot)可以理解为是一个可以存储两个数值的一个变量这个变量的取值范围是:0-16383。还有一个就是cluster我个人把这个cluster理解为是一个集群管理的插件。当我们的存取的key到达的时候,redis会根据crc16的算法得出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作

  

   上面这个图就解释了,最后在7003中查不到这个key,而能获取这个key的值,类似于路由的概念

 


   

redis集群配置步骤:  

  下面我简单实现一下在linux上搭建redis集群的步骤,redis的非集群安装

  redis集群我采用六个点,三主三从形式,这是为了选举机制而这样设计,这个选举规则和hive,zookeeper类似,都是 少数服从多数的选举机制.

    由于资源有限,我用一台主机模拟六台实例机器,实现集群的搭建,暂定我的实例端口7001~7006.

    1>在搭建集群之前我简单介绍一下安装编译redis的四步:

      第一步:下载redis.tar包,

      第二步:上传,并解压

      第三步:进人解压后的文件夹输入make进行编译

      第四步: 编译后需要走执行安装,并指定安装路径   make install PREFIX=/usr/local/redis     这样就可以生成bin目录了,不用拷贝src,通过执行这个命令就跑到我们指定的文件夹下,并生成bin文件夹: 

    2>redis的安装编译按照上面步骤走就应该可以了,记得启动测试一下,我这就不测试先。

    3>在步骤1中的第四步的bin文件内容如下:此时在任何目录都可以执行bin文件夹下的命令了

      

     4>退出到上级目录,并创建一个redis-cluster文件夹,放集群的文件,将bin复制6份分别拷贝到

      

     5>把刚安装编译目录下的redis.conf文件复制到redis-cluster/redis1|2|3|4|5|6文件夹下,并对redis.conf修改端口号:

        

        分别进入各个文件夹下,修改redis.conf     vi redis.conf

          修改port 6379   改为7001  其他同理,改7002,7003.。。。

          

     6>  分别启动6个redis节点的服务  ,验证端口修改是否成功 (这步可以不做)

     7>准备集群:

      redis集群的管理工具使用的是ruby脚本语言,安装集群需要ruby环境。

      

      安装Ruby的打包系统,主要用gem命令:

      

      还需要连接gem服务器,需要手工安装:

      

      执行这个命令,加载gem命令:gem install redis-3.0.0.gem

      

     8>集群的环境准备已经完成,下面在redis.conf配置允许集群:

      把#注释放开:就行了,其他几个也是这样操作

      

      然后再次重启实例,第六步在这做也行,为了步骤完整,就都写出来了

     9>集群管理工具在redis解压文件夹的src的文件夹中,使用redis-cluster的集群管理工具启动集群

      

    10>启动集群

      ./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006    这个命令可以:

      ./redis-trib.rb create --replicas 1 192.168.146.132:7001 192.168.146.132:7002 192.168.146.132:7003 192.168.146.132:7004 192.168.146.132:7005 192.168.146.132:7006  (需要在etc把ip放出来才可以,我这里搭建的是测试环境,就不操作了)这步我执行这条命令报错是:

      

    所以执行上面那条命令:集群启动效果如下:

      

      

      看到ok代表集群启动成功了。

    11>测试:加-c参数,节点之间就可以互相跳转

      

      

      虽然查不到key,但是可以获取到值,说明集群是成功的。

      

      存到了7002上,转到7001,这是主节点,他们对应的slave点也会有这条数据,但是7003和7006上没有,测试成功:

     


       

     

redis介绍(6)集群(ruby)的更多相关文章

  1. 三千字介绍Redis主从+哨兵+集群

    一.Redis持久化策略 1.RDB 每隔几分钟或者一段时间会将redis内存中的数据全量的写入到一个文件中去. 优点: 因为他是每隔一段时间的全量备份,代表了每个时间段的数据.所以适合做冷备份. R ...

  2. Redis 高可用集群

    Redis 高可用集群 Redis 的集群主从模型是一种高可用的集群架构.本章主要内容有:高可用集群的搭建,Jedis连接集群,新增集群节点,删除集群节点,其他配置补充说明. 高可用集群搭建 集群(c ...

  3. Redis进阶实践之十一 Redis的Cluster集群搭建

    一.引言      本文档只对Redis的Cluster集群做简单的介绍,并没有对分布式系统的详细概念做深入的探讨.本文只是提供了有关如何设置集群.测试和操作集群的说明,而不涉及Redis集群规范中涵 ...

  4. redis主从、集群、哨兵

    redis的主从.集群.哨兵 参考: https://blog.csdn.net/robertohuang/article/details/70741575 https://blog.csdn.net ...

  5. redis系列:集群

    1 简介 Redis 集群是Redis 的一个分布式实现,它是一个网状结构,每个节点都通过 TCP 连接跟其他每个节点连接.现在来看看Redis集群实现了哪些目标? 在1000个节点的时候仍能表现得很 ...

  6. linux Redis 5.0集群搭建

    文档结构如下: Redis cluster 是redis的分布式解决方案,在3.0版本正式推出后,有效的解决了redis分布式方面的需求:当遇到单机内存,并发,流量等瓶颈是,可以采用cluster架构 ...

  7. Redis 3.0 集群搭建

    Redis 3.0 集群搭建 开启两个虚拟机 分别在两个虚拟机上开启3个Redis实例 3主3从两个虚拟机里的实例互为主备 下面分别在两个虚拟机上安装,网络设置参照codis集群的前两个主机 分别关闭 ...

  8. Redis 3.0集群 Window搭建方案

    Redis 3.0集群 Window搭建方案 1.集群安装前准备 安装Ruby环境,安装:rubyinstaller-2.3.0-x64.exe http://dl.bintray.com/onecl ...

  9. Redis进阶实践之十 Redis主从复制的集群模式

    一.引言        Redis的基本数据类型,高级特性,与Lua脚本的整合等相关知识点都学完了,说是学完了,只是完成了当前的学习计划,在以后的时间还需继续深入研究和学习.从今天开始来讲一下有关Re ...

  10. Redis进阶实践之十二 Redis的Cluster集群动态扩容

    一.引言     上一篇文章我们一步一步的教大家搭建了Redis的Cluster集群环境,形成了3个主节点和3个从节点的Cluster的环境.当然,大家可以使用 Cluster info 命令查看Cl ...

随机推荐

  1. 《LeetBook》leetcode题解(15):3Sum[M]

    我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...

  2. Windows下如何正确下载并安装可视化的Redis数据库管理工具(redis-desktop-manager)(图文详解)

    不多说,直接上干货! Redis Desktop Manager是一个可视化的Redis数据库管理工具,使用非常简单.       官网下载:https://redisdesktop.com/down ...

  3. jquery获取input的checked属性

    1.经常需要判断某个按钮是否被选中. 2.基于jquery. <!DOCTYPE html> <html lang="en"> <head> & ...

  4. linux解压.tar.xz压缩包

    今天,打算更新一下node版本(v6.11.1 -> v8.9.4),结果阿里云服务器使用nvm命令下载慢如牛,于是直接在node官网找到合适的v8.9.4压缩包下载到电脑里,然后up到阿里云服 ...

  5. R语言之数据处理常用包

    dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了与其它数据库的接口:tidyr包的作者是Hadley ...

  6. 二维码ZBar之ZBarReaderView

    参考:http://www.chinatarena.com/Html/iospeixun/201301/3985.html   http://blog.csdn.net/chenyong05314/a ...

  7. 常用工具说明--Java的常用工具

    1.Eclipse.IntelliJ IDEA Eclipse是IDE领域的瑞士军刀,有着大量定制的接口和无数的插件.它无处不在,后面本文将推荐的其他所有工具都提供Eclipse插件. Eclipse ...

  8. 我理解的js中预解释

    浏览器在执行代码前,先找带var和带function的地方,把带var的声明且赋予初始值undefined,把带function的声明且定义. 带var关键字预解释 让我们先看下这段代码执行的结果: ...

  9. tomcat shutdown.sh结束不了,Could not contact localhost:8005

    使用./shutdown.sh关闭Tomcat,有时会关闭成功,有时会出现关闭错误; Jul 06, 2017 10:57:37 AM org.apache.catalina.startup.Cata ...

  10. springboot之约定大约配置

    前言 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样 ...