redis 集群/分片 Cluster

  • 集群模式可以分布式存储数据,比如一共 n 条数据,3 个节点,每个节点只存储 n/3 条数据(主从模式是每台服务器都存储了完整的数据)
  • 主从模式(哨兵也算主从)下,因为只有一个主机,所以当写操作过多时主机压力也会比较大

环境搭建

跟前面主从哨兵一样,还是在一台 linux 上部署多个 redis

  1. 创建一个文件夹,比如 /myredis,把 redis.conf 复制到这个文件夹中,redis.conf 作为公共配置文件

  2. 在文件夹中,创建6个配置文件(三主三从)

    • redis6379.conf(主1)、redis6380.conf(主2)、redis6381.conf(主3)
    • redis6389.conf(从1)、redis6390.conf(从2)、redis6391.conf(从3)
  3. 6 个配置文件下入如下内容

    # 6 个配置文件中这句相同,表示都用这个公共配置文件
    include /myredis/redis.conf
    # 6 个配置文件中这句各不相同,指定 pid
    pidfile /var/run/redis_6379.pid
    # 6 个配置文件中这句各不相同,指定端口
    port 6379
    # 6 个配置文件中这句各不相同,指定持久化文件
    dbfilename dump6379.rdb
    # 6 个配置文件中这句相同,开启集群模式
    cluster-enabled yes
    # 6 个配置文件中这句各不相同,设置节点配置文件名
    cluster-config-file nodes-6379.conf
    # 6 个配置文件中这句相同,超过 15 秒连不上切换主从
    cluster-node-timeout 15000
    
  4. 用这 6 个配置文件启动 6 个 redis 服务

  5. 创建集群环境,现在这 6 个redis 服务都是单独的,没有联系

    • 如果是低版本需要安装 ruby 环境

    • 如果是高版本,已经集成 ruby 了,直接进入 redis 解压目录下的 src 目录执行命令

      # 这个 redis-cli 不是 bin 目录下的
      # --cluster create 创建集群环境
      # --cluster-replicas 1 1 表示一个副本(执行命令的时候,前面三个作为主,后面三个作为对应的从机)
      # 后面的 ip 地址不能是 127.0.0.1
      ./redis-cli --cluster create --cluster-replicas 1 192.168.56.161:6379 192.168.56.161:6380 192.168.56.161:6381 192.168.56.161:6389 192.168.56.161:6390 192.168.56.161:6381
      
    • 执行命令之后会询问是否接受分配方式,输入 yes 然后回车

      • 这个命令执行完之后能看到总共的槽有多少个,slots
      • 也能看到每个节点的槽的范围(set key value 时 redis 会计算 key 应该落在哪个槽,也就能知道这个 key 在哪个节点)

常用命令

集群和非集群命令不是全部通用,集群下连接 redis 和设置值,统计等都是不一样的

  • 连接集群环境

    • 在 bin 下执行 ./redis-cli -p 6379 配置文件 是普通连接方式(主从/哨兵的连接方式,不是集群的连接方式)
    • 在 bin 下执行 ./redis-cli -c -p 6379 才是集群的连接方式,不需要指定配置文件,需要加 -c
  • cluster nodes 可以查看集群配置信息

  • cluster keyslot k1 查看 k1 应该落在哪个槽(就能知道 k1 在哪个节点)

  • 执行 set 命令,会先计算该 key 会落在那个槽中,可能当前登录的是 6379,但是计算之后这个 key 应该放在 6380 上

posted @ 2023-06-28 17:55  CyrusHuang  阅读(17)  评论(0编辑  收藏  举报