zoukankan      html  css  js  c++  java
  • Redis集群搭建

    一、安装ruby环境  

      本身redis集群的安装是很麻烦了,通过ruby工具,可以非常方便的将一系列命令打包为一个脚本!

      1、安装ruby环境:  

    yum -y install ruby
    
    yum -y install rubygems

      2、安装redis gem

      redis-3.2.0.gem是一个通过ruby操作redis的插件!

      自己下载

    gem install --local redis-3.2.0.gem

    二、准备redis.conf

      主要配置地方:  

    bind 192.168.88.100
    port 6379
    daemonize yes #后台守护模式运行
    pidfile /var/run/redis_6379.pid #运行进程id 默认
    logfile "" #日志的路径

    三、准备集群的6个redis配置文件

      端口号分别为:6380,6381,6382,6383,6384,6385

      每个配置文件的配置如下
      

    1 include /root/redis/base.conf  #主配置文件
    2 daemonize yes
    3 port 6380
    4 pidfile "/root/redis/redis_6380.pid"
    5 logfile "/root/redis/reds_log_6380.log"
    6 dbfilename "dump_6380.rdb"  #快照备份的名字,注意只是文件名,不能加路径
    7 cluster-enabled yes
    8 cluster-config-file nodes-6380.conf   #集群节点设置
    9 cluster-node-timeout 15000

       redis:目录自己创建的

      base.conf:刚自己准备的 redis.conf

      注意:删除所有快照文件dump

    四、分别启动服务

    1  redis-server redis_6380.conf
    2  redis-server redis_6381.conf
    3  redis-server redis_6382.conf
    4  redis-server redis_6383.conf
    5  redis-server redis_6384.conf
    6  redis-server redis_6385.conf

     

    五、加入集群

       在/opt/redis-3.2.5/src目录下,执行命令

       

    /opt/module/redis-3.2.5/src/redis-trib.rb create --replicas 1 192.168.88.100:6380 192.168.88.100:6381 192.168.88.100:6382 192.168.88.100:6383 192.168.88.100:6384 192.168.88.100:6385

     

       三主三从,replicas  1 这个1就是一个mater一个slave,redis默认是3个master,要陪两个从机,就要创建9个redis节点

    六、查看

      1、查看进程

      2、查看集群节点

      登录其中一个客户端 

    redis-cli -c -h 192.168.88.100 -p 6380

      在redis-cli每次录入、查询键值,redis都会计算出该key应该送往的插槽,如果不是该客户端对应服务器插槽,redis会报错,并告知应前往的redis实例地址和端口。

      –c 参数实现自动重定向。如 redis-cli  -c –p 6379 登入后,再录入、查询键值对可以自动重定向。

      每个slot可以存储一批键值对

      

     

       myself:自己登录的那个

    七、读取键的操作

      

       采用哈希算法后,会自动地分配slot,而 不在一个slot下的键值,是不能使用mget,mset等多键操作。

      通过{}来定义组的概念,从而使key中{}内相同内容的键值对放到一个slot中去。

    八、集群中读取数据

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

      

       2、cluster countkeysinslot <slot>返回槽 slot 目前包含的键值对数量

      

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

      

    九、集群的jedis开发 

    1     @Test
    2     public void testCluster(){
    3         Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
    4         jedisClusterNodes.add(new HostAndPort("192.168.88.100", 6380));
    5         JedisCluster jc = new JedisCluster(jedisClusterNodes);
    6         jc.set("foo", "bar");
    7         String value = jc.get("foo");
    8         System.out.println(value);
    9     }

      只需要写集群中任意的端口,不管是master和slave都能连接,操作集群

    十、优缺点  

      优点:

        实现扩容

        分摊压力

        无中心配置相对简单

      缺点:

        多键操作是不被支持的

        多键的Redis事务是不被支持的(因为slot可能不一样)。lua脚本不被支持。

        由于集群方案出现较晚,很多公司已经采用了其他的集群方案,而代理或者客户端分片的方案想要迁移至redis cluster,需要整体迁移而不是逐步过渡,复杂度较大。

  • 相关阅读:
    this指向问题
    b继承a的函数
    如何解决跨域问题
    事件冒泡和阻止事件冒泡
    Spring5(二)——IOC
    MySQL基础(四)——
    MySQL基础(二)——常用命令
    MySQL基础(一)——入门
    Linux(二)——常用命令
    Linux(一)——简介
  • 原文地址:https://www.cnblogs.com/hyunbar/p/11589882.html
Copyright © 2011-2022 走看看