Redis集群的配置与使用

redis集群

  • 什么是redis集群?

    • redis是指启动N个节点,将整个数据库分布在这N个节点中,每个节点存储总数据的1/N。
    • redis集群实现了对redis的水平扩容
    • redis集群通过分区来提供一定程度的可用性,即使集群中有一部分失效或者无法进行通讯,集群也可以继续处理命令请求。
  • 集群解决的问题:

    • 实现内存的扩容
    • 实现高并发写
  • 集群实现步骤

    • 1.集群配置
      在这里插入图片描述
    • 2.启动每一个节点redis服务
      • 命令redis-server 配置文件
    • 3.组合集群的每一个节点
      • 命令redis-cli --cluster create --cluster-replicas 1(配置策略) 每一个节点的ip:port
      • 注意
      • 1.组合之前应该检查每一个节点是否生成对应的node*.conf文件,否则说明配置维成功**
      • 2.应该配置host使用内网ip,不用使用127.0.0.1本地地址
  • 集群的使用

    1.集群的连接
    • 使用普通方式连接
      • 存储数据时可能出现MOVED重定向到另外的主机的错误
      • 出现此错误的原因:
        集群的时候对每一个key对进行了分区,即每一个key对应着唯一的插槽(slot)
      • 什么是slot?
        一个 Redis 集群包含 16384 个插槽(hash slot), 数据库中的每个键都属于这 16384 个插槽的其中一个, 集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽, 其中 CRC16(key) 语句用于计算键 key 的 CRC16 校验和 。
    • 使用集群方式连接
      • 存储数据时,若此数据不在该主机负责的插槽中,则自动重定向到负责此数据的主机上且存储此数据
      • 即使连接的不是主机,集群会自动切换主机存储。主机写,从机读。
      • 无中心化主从集群。无论从哪台主机写的数据,其他主机上都能读到数据
    • 在连接后,可通过命令cluster nodes查看集群配置
    2.在集群中录入值
    • mset k1 v1 k2 v2 k3 v3可能会出现不在同一个slot的key不能同时设置

      • 即不在一个slot下的键值,是不能使用mget,mset等多键操作。
        在这里插入图片描述
      • 解决方法
        在每一个key后面加{描述信息}即可
        mset k1{s1} v1 k2{s1} v2 k3{s3} v3
        在这里插入图片描述
    • 查询集群中的值

      • cluster keyslot key名或组名–查看插槽的对应的值
      • cluster countkeysinslot key名或组名–查看插槽的key的数量
      • cluster getkeysinslot key名或组名–获取插槽含有的key
        在这里插入图片描述
  • 集群的故障恢复

    • 集群故障后主节点与子节点的关系:
      • 若主节点发生故障,过一段时间子节点会自动成为主节点,取决于你的配置信息(cluster-timeout),恢复后,主节点会变成子节点的从机
        在这里插入图片描述
    • 如果所有某一段插槽的主从节点都宕掉,redis服务是否还能继续?
      • 取决于redis.conf中的参数cluster-require-full-coverage
      • 如果某一段插槽的主从都挂掉,而cluster-require-full-coverage为yes ,那么 ,整个集群都挂掉
      • 如果某一段插槽的主从都挂掉,而cluster-require-full-coverage为no ,那么,该插槽数据全都不能使用,也无法存储。
  • 集群的主子节点分配策略

    • 主节点和主节点不应该在同一个机器服务
    • 主节点和子节点不应该在同一个机器服务
    • 原因:若主节点和主节点在同一个机器服务,那这个机器发生故障,即全部数据库故障,redis服务停止。同理,若主节点和子节点在同一个机器服务,那主节点发生故障,则子节点也发生故障,若不在同一台机器,则子节点在主节点发生故障后可以成为主节点。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天有在好好写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值