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

    集群搭建

    redis使用crc16算法确定当前key的处于哪个slot,crc16算法会将一切key转化为0-16383范围内,然后根据slot范围找对应master进行操作

    (现在好像不需要安

    装ruby了,直接使用redis-cli即可(因为使用redis-trib.rb时提示我,我们需要使用redis-cli替换,因为redis-trib.rb功能被移除))

    按照这个搭建应该可以

    https://blog.csdn.net/aloneno/article/details/96370167

    为了测试,我不使用docker了!下方redis安装!(官方给的)

    【我使用6.0什么版本make直接报错!】

    $ wget https://download.redis.io/releases/redis-6.2.1.tar.gz
    $ tar xzf redis-6.2.1.tar.gz
    $ cd redis-6.2.1
    $ make
    

    前置配置环境

    https://www.jianshu.com/p/3d014c1240fc

    https://blog.csdn.net/HeyShHeyou/article/details/108937863

    集群维护节点,节点维护槽slot,每个槽负责数据存储

    yum install -y ruby rubygenms 这样安装版本太低,使用上方链接进行安装
    

    步骤:

    1. 创建文件夹7000 7001 ... 7006
    2. 每个文件夹放一个redis.conf
    3. 修改配置文件中
    bind注释掉或者改为0.0.0.0
    port 7000
    
    dbfilename "dump_7000.rdb"
    
    cluster-enabled yes
    
    cluster-config-file nodes-7000.conf
    
    cluster-node-timeout 5000
    
    appendonly yes
    
    appendfilename "appendonly-7000.aof"
    
    #设置为守护进行启动,因为这个和docker不太一样,否则它会占用我们的端口
    daemonize yes 
    
    然后对于一些rdb文件和aof文件名字,我们自己修改为 【名-端口】 这样来命名
    
    1. 都这样改之后启动7台机器

      [root@nxj-01 redis-6.2.1]# cd src/
      [root@nxj-01 src]# ./redis-server ../7000/redis.conf 
      [root@nxj-01 src]# ./redis-server ../7001/redis.conf 
      [root@nxj-01 src]# ./redis-server ../7002/redis.conf 
      [root@nxj-01 src]# ./redis-server ../7003/redis.conf 
      [root@nxj-01 src]# ./redis-server ../7004/redis.conf 
      [root@nxj-01 src]# ./redis-server ../7002/redis.conf 
      [root@nxj-01 src]# ./redis-server ../7005/redis.conf 
      [root@nxj-01 src]# ./redis-server ../7006/redis.conf 
      [root@nxj-01 src]# ps -ef |grep redis
      root      42139      1  0 10:13 ?        00:00:00 ./redis-server *:7000 [cluster]
      root      42170  35241  0 10:14 pts/3    00:00:00 ./redis-cli -p 7000
      root      42202      1  0 10:14 ?        00:00:00 ./redis-server *:7001 [cluster]
      root      42212      1  0 10:14 ?        00:00:00 ./redis-server *:7002 [cluster]
      root      42222      1  0 10:14 ?        00:00:00 ./redis-server *:7003 [cluster]
      root      42231      1  0 10:14 ?        00:00:00 ./redis-server *:7004 [cluster]
      root      42245      1  0 10:15 ?        00:00:00 ./redis-server *:7005 [cluster]
      root      42253      1  1 10:15 ?        00:00:00 ./redis-server *:7006 [cluster]
      root      42264   3243  0 10:15 pts/0    00:00:00 grep --color=auto redis
      
      
    2. src下有一个redis-trib.rb 这个是启动集群的脚本!

    3. 创建集群

    下方两个使用redis-trib.rb命令被弃用
    ./redis-trib.rb create --replicas 1 192.168.2.84:7000 192.168.2.84:7001 192.168.2.84:7002 192.168.2.84:7003 192.168.2.84:7004 192.168.2.84:7005 
     
      ./redis-cli create --replicas 1 192.168.2.84:7000 192.168.2.84:7001 192.168.2.84:7002 192.168.2.84:7003 192.168.2.84:7004 192.168.2.84:7005 
    --replicas
    
    ( 意思就是作为副本节点的数量,这里写1,那么就会把前3台作为master,后3台分别作为slave)
    有密码需要加-a 参数
    ./redis-cli --cluster create 192.168.2.84:7000 192.168.2.84:7001 192.168.2.84:7002 192.168.2.84:7003 192.168.2.84:7004 192.168.2.84:7005 --cluster-replicas 1 -a 123456
    
    
    1. 回车后,询问时输入yes,集群就启动了,将16384个slot均分到集群的各个master上

      M: b270facc8241fae7a13d938b56c7a0ab5d834221 192.168.2.84:7000
         slots:[0-5460] (5461 slots) master
         1 additional replica(s)
      M: 0e61dc494d867da96d1965594ae62eb414969221 192.168.2.84:7002
         slots:[10923-16383] (5461 slots) master
         1 additional replica(s)
      S: 6b9481552060f2011fffbbf642b6b188610d26a3 192.168.2.84:7004
         slots: (0 slots) slave
         replicates 4a65174c30850dcd637626d20a77cdca28d56fb6
      S: d9179d232fdd7a401bdefb2873aab4938a11dc8d 192.168.2.84:7003
         slots: (0 slots) slave
         replicates b270facc8241fae7a13d938b56c7a0ab5d834221
      M: 4a65174c30850dcd637626d20a77cdca28d56fb6 192.168.2.84:7001
         slots:[5461-10922] (5462 slots) master
         1 additional replica(s)
      S: 8fc968f7d3aa04860ca27fe71960dce23a3428c9 192.168.2.84:7005
         slots: (0 slots) slave
         replicates 0e61dc494d867da96d1965594ae62eb414969221
      
      [OK] All nodes agree about slots configuration.
      >>> Check for open slots...
      >>> Check slots coverage...
      [OK] All 16384 slots covered.
      
    2. 使用如下指令查看集群状态
      ./redis-cli --cluster check 192.168.2.84:7000 -a 123456
      

      9.集群方式操作:(需要加-c操作)

      ./redis-cli -p 7000 -c
      

    集群中从节点不负责写,仅仅负责集群的同步

    #往现有集群中添加主节点

    ./redis-cli --cluster add-node 192.168.2.84:7006 192.168.2.84:7000 -a 123456
    加入进去默认分配0个槽
    

    #往现有集群中添加从节点

    # 不指定哪个主节点的副本节点,则redis会随机给副本少的主节点增加当前副本节点
    ./redis-cli --cluster add-node --slave 192.168.2.84:7007 192.168.2.84:7000 -a 123456 
    
    #为确定的master节点添加副本节点
    ./redis-cli --cluster add-node --slave --master-id 108d6dc450616afd4b41fc06983f07fc2b496e24 192.168.2.84:7007 192.168.2.84:7000 -a 123456 
    (其中master-id通过./redis-cli --cluster check 192.168.2.84:7000 -a 123456可以查看)
    

    #删除副本节点

    被删除的一定是要没有分配hash槽的

    [ip:port][节点id]
    ./redis-cli --cluster del-node 192.168.2.84:7006 108d6dc450616afd4b41fc06983f07fc2b496e24 -a 123456
    

    session共享

    <!--session共享-->
    <dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session-data-redis</artifactId>
    </dependency>
    

    并启用@EnableRedisHttpSession

  • 相关阅读:
    [USACO 2012 Feb B]Moo
    [Atcoder ARC124] XOR Matching 2-小思维 | 暴力
    loj数列分块入门
    2019牛客暑期多校2-Partition problem深搜
    Codeforces 1554C
    [USACO 2012 Feb G]Cow Coupons----贪心&带悔(看完稳AC)
    Codeforces 220B-Little Elephant and Array-扫描线 & 树状数组
    [AtCoder ARC098] Donation| 建图 | 树型dp
    关于幂等性以及怎么实现幂等性
    【OOM】解决思路
  • 原文地址:https://www.cnblogs.com/ningxinjie/p/14596443.html
Copyright © 2011-2022 走看看