一、什么是Redis集群

  Redis 集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。

  Redis 集群通过分区(partition)来提供一定程度的可用性(availability): 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求

二、安装环境(CentOS 7)

  执行yum install ruby

  执行yum install rubygems

  设置redisXXX.conf配置文件,把里面6379替换成相应的XXX(XXX代表端口号),一共配置六个,我配置的是6379 6380 6381 6389 6390 6391这6个端口

  

三、集群操作

  1.通过对应的redisXXX.conf配置文件,开启6个redis实例,开启后生成6个对应的nodes-xxx文件

  

  2.进入解压redis-3.2.5.tar.gz后生成的redis-3.2.5文件夹里面的src;例:

    cd /opt/redis-3.2.5/src/

  3.进入目录后,执行下面的语句

    #  --replicas 1 表示对每个主节点创建一个从节点

    ./redis-trib.rb create --replicas 1 本机IP:6379 本机IP:6380 本机IP:6381 本机IP:6389 本机IP:6390 本机IP:6391

   例如我的CentOS的IP为192.168.207.128,其中的端口号为开启的redis实例的端口号:

    ./redis-trib.rb create --replicas 1 192.168.207.128:6379 192.168.207.128:6380 192.168.207.128:6381 192.168.207.128:6389 192.168.207.128:6390 192.168.207.128:6391

   

  4.以集群的方式进去客户端

    redis-cli -c -p 端口号  或者 redis-cli  -p 端口号(下面会讲区别)

  

  5.通过cluster nodes查看集群信息

  

四、相关知识

  1.redis cluster如何分配这6个节点

    一个集群至少要有3个主节点

    在六个节点合体时,使用的命令中 --replicas 1 表示对每个主节点创建一个从节点

    分配原则尽量保证每个主数据库运行在不同的IP地址,每个从库和主库不在一个IP地址上

  2.插槽

    ①:一个 Redis 集群包含 16384 个插槽(hash slot), 数据库中的每个键都属于这 16384 个插槽的其中一个, 集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽, 其中 CRC16(key) 语句用于计算键 key 的 CRC16 校验和 。

    ②:集群中的每个节点负责处理一部分插槽。 举个例子, 如果一个集群可以有主节点, 其中:

      节点 A 负责处理 0 号至 5500 号插槽。
      节点 B 负责处理 5501 号至 11000 号插槽
      节点 C 负责处理 11001 号至 16383 号插槽

  3.登录客户端使用-c与不使用的区别

    使用-c会自动重定向key对应插槽的客户端,不使用-c不会自动重定向,会报错,并告诉你应前往的redis实例地址和端口

  4.不在一个插槽的键值,不能使用mget、mset等多键操作;可以通过{}来定义组,使key{xxx}内相同的内容的键值对放到一个插槽中

  5.主节点宕机,从节点会自动变成主节点,主节点会变成从节点

  6.如果所有某一段插槽的主从节点都当掉,redis服务不能继续服务,因为这一段插槽不会自动分配到其他节点中去。

    redis.conf中参数 cluster-require-full-coverage  yes ;  默认16384个插槽全部正常时才工作

  7.相关命令

    CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。

    CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。

    CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。

Redis---08Redis集群(一)的更多相关文章

  1. Redis分布式集群几点说道

    原文地址:http://www.cnblogs.com/verrion/p/redis_structure_type_selection.html  Redis分布式集群几点说道 Redis数据量日益 ...

  2. Redis集群(九):Redis Sharding集群Redis节点主从切换后客户端自动重新连接

    上文介绍了Redis Sharding集群的使用,点击阅读 本文介绍当某个Redis节点的Master节点发生问题,发生主从切换时,Jedis怎样自动重连新的Master节点 ​一.步骤如下: 1.配 ...

  3. Redis集群(八):Redis Sharding集群

    一.Redis目前的集群方案主要有两种:Redis Sharding和Redis Cluster 1.Redis Sharding:3.0以前基本上使用分片实现集群,目前主流方案,客户端实现 2.Re ...

  4. 170103、Redis官方集群方案 Redis Cluster

    前面我们谈了Redis Sharding多服务器集群技术,Redis Sharding是客户端Sharding技术,对于服务端来说,各个Redis服务器彼此是相互独立的,这对于服务端根据需要灵活部署R ...

  5. 【redis】 redis 创建集群时,Waiting for the cluster to join.... 一直等待

    redis 搭建集群时,一直join.... ./redis-trib.rb  create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1: ...

  6. Redis 一二事 - 在spring中使用jedis 连接调试单机redis以及集群redis

    Redis真是好,其中的键值用起来真心强大啊有木有, 之前的文章讲过搭建了redis集群 那么咋们该如何调用单机版的redis以及集群版的redis来使用缓存服务呢? 先讲讲单机版的,单机版redis ...

  7. 【Redis】Redis分布式集群几点说道

    Redis数据量日益增大,使用的公司越来越多,不仅用于做缓存,同时趋向于存储这一块,这样必促使集群的发展,各个公司也在收集适合自己的集群方案,目前行业用的比较多的是下面几种集群架构,大部分都是采用分片 ...

  8. nginx+tomcat+redis的集群+session共享

    nginx+tomcat+redis的集群+session共享 环境准备 1.tomcat版本:tomcat7 tomcat下载及安装,目前很多好的资源和步骤,此处省略. 2.jdk版本:jdk1.7 ...

  9. docker1.12 安装redis第三方集群方案 codis

    docker1.12 安装redis第三方集群方案 codis

  10. 02.Redis主从集群的Sentinel配置

    1.集群环境 1.Linux服务器列表 使用4台CentOS Linux服务器搭建环境,其IP地址如下: 192.168.110.100 192.168.110.101 192.168.110.102 ...

随机推荐

  1. Redis学习(三)java使用redis

    一.操作步骤 Redis除了命令行操作以外,还可以通过java代码进行操作,流程如下: 下载Jedis依赖包,并丢入工程中合适的位置 在Maven中引入redis的包 <!--引入redis包- ...

  2. Oracle学习(八)RECORD(自定义结构)

    一.定义 记录数据类型的一种,将几个相关的.分离的.基本数据类型的变量组成一个类似于整体表结构的对象,即RECORD复合数据类型. 在使用记录数据类型变量时,需要在声明部分先定义记录的组成.记录的变量 ...

  3. 从 LRU Cache 带你看面试的本质

    前言 大家好,这里是<齐姐聊算法>系列之 LRU 问题. 在讲这道题之前,我想先聊聊「技术面试究竟是在考什么」这个问题. 技术面试究竟在考什么 在人人都知道刷题的今天,面试官也都知道大家会 ...

  4. 对Elasticsearch生命周期的思考

    什么是es索引的生命周期?有啥用?可以怎么用?用了有什么好处呢? 在现实的生产环境中有没有觉得自己刚开始设计的索引的分片数刚刚好,但是随着时间的增长,数据量增大,增长速度增大的情况下,你的es索引的设 ...

  5. 怎么摆脱又臭又长的 Git 命令?

    在使用 Git 的时候,虽然大部分时候我们用的是图形客户端,但图形客户端不能解决所有的操作,所以,也少不了要需要使用命令行的时候. 但有些 Git 命令和参数确实又不好记,甚至有的命令每次要用的时候需 ...

  6. 深入理解Callable接口

    Callable接口: Callable,新启线程的一种方式,返回结果并且可能抛出异常的任务,在前面的新启线程的文章中用过,但是没有具体讲解 优点: 可以获取线程的执行结果,也称为返回值 通过与Fut ...

  7. IDEA文本编辑区的护眼绿豆沙色配置

    第一步:打开IDEA -> File -> settings -> Editor -> Color Scheme -> General 第二步:找到右方Text -> ...

  8. Copy As HTML From VSCode

    JS生成可自定义语法高亮HTMLcode cnblogs @ Orcim  !deprecated! 这里有更好的方案,具体看我的这篇博客博客代码高亮的另一种思路 这篇文章介绍了如何在博客里插入一段 ...

  9. 山寨一个Spring的@Component注解

    1. 前言 我们在上一篇对Mybatis如何将Mapper接口注入Spring IoC进行了分析,有同学问胖哥这个有什么用,这个作用其实挺大的,比如让你实现一个类似@Controller的注解(或者继 ...

  10. 在Python中使用OpenCV(CV2)对图像进行边缘检测

    转载:https://blog.csdn.net/cumtb2002/article/details/107798767 Modules used: 使用的模块: For this, we will ...