redis-cluster 搭建

  • 当数据量太大的时候,应该考虑分布式,加机器,把数据分到不同的位置,分摊集中的压力

  • 数据如何分配?

    • Redis Cluster采用哈希分区规则,因此接下来会讨论哈希分区规则。即取余
    • Redis Cluster采用虚拟槽分区,Redis Cluster槽的范围是0 ~ 16383。槽是集群内数据管理和迁移的基本单位。采用大范围的槽的主要目的是为了方便数据的拆分和集群的扩展,每个节点负责一定数量的槽。
  • 搭建redis cluster

  1. 环境准备

    #通过配置,开启redis-cluster
    port 7000
    daemonize yes
    dir "/opt/redis/data"
    logfile "7000.log"
    dbfilename "dump-7000.rdb"
    cluster-enabled yes   #开启集群模式
    cluster-config-file nodes-7000.conf  #集群内部的配置文件
    cluster-require-full-coverage no  #redis cluster需要16384个slot都正常的时候才能对外提供服务,换句话说,只要任何一个slot异常,那么整个cluster不对外提供服务。 因此生产环境一般为no
    
    #6个配置文件  仅仅是端口的区别
    redis-7001.conf 
    redis-7002.conf 
    redis-7003.conf 
    redis-7004.conf 
    redis-7005.conf 
    
  2. 分配槽位

    1. 配置ruby脚本环境

      #yum安装  会自动给配置PATH环境变量
      yum install ruby  
      
      #编译安装
      wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
      #安装ruby
      tar -xvf ruby-2.3.1.tar.gz
      ./configure --prefix=/opt/ruby/
      make && make install
      #准备一个ruby命令
      #准备一个gem软件包管理命令
      #拷贝ruby命令到path下/usr/local/ruby
      cp /opt/ruby/bin/ruby /usr/local/
      cp bin/gem /usr/local/bin
      
    2. 下载ruby操作redis的模块

      wget http://rubygems.org/downloads/redis-3.3.0.gem   
      
    3. 用ruby的包管理工具 gem 安装这个模块

      gem install -l redis-3.3.0.gem
      
    4. 通过ruby一键分配redis-cluster集群的槽位

      #找到机器上的redis-trib.rb命令,用绝对命令创建 
      find / -name redis-trib.rb
      #开启集群  分配槽位
      /opt/redis-4.0.10/src/redis-trib.rb  create --replicas 1 127.0.0.1:7000 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
      

  • 六个节点 三个主节点被分配槽位,另外三个是从节点 ,负责从主节点复制数据

  • 成功
  1. 分配好集群后,可以向集群内写入数据了
redis-cle -c  #指定集群模式,登录数据库
  1. 登录redis写入数据,发现槽位分配,且重定向之后,集群搭建成功

原文地址:https://www.cnblogs.com/kevin6/p/11799545.html