zoukankan      html  css  js  c++  java
  • Redis主从和集群

    主从概念

    • 一个master可以拥有多个slave,一个slave又可以拥有多个slave。如此下去,形成了强大的多级服务器集群架构。
    • master用写数据,经统计:网站的读写比率是10:1
    • 通过主从分离可以实现读写分离
    • master和slave都是一个redis实例(redis服务)
      在这里插入图片描述

    主从配置

    Redis:

    安装
    sudo apt-get install redis-server
    
    卸载
    sudo apt-get purge --auto-remove redis-server
    
    启动
    sudo service redis-server start
    
    停止
    sudo service redis-server stop
    
    ## master ##
    #1. 修改 master配置
    vim /etc/redis/redis.conf
    #2.修改bind为本机ip
    bind your_ip
    
    
    ## slave配置 ##
    #1.复制redis.conf 名为slave.conf
    cp redis.conf slave.conf
    # 2.修改配置 修改bind为本机ip
    bind your_ip
    #3.更改端口 例如 
    port 6378
    #4. 更改slaveof
    slaveof your_ip 6379
    redis-server /etc/redis/slave.conf
    

    查看主从关系 redis-cli -h your_ip -p your_port info Replication
    在这里插入图片描述
    或者:
    在这里插入图片描述
    当master中添加数据后,会自动备份到slave中,slave中read_only.

    集群

    为什么要有集群?

    • 如果访问量过大(1000W),主服务肯定会挂掉,数据服务就挂掉了或者发生自然灾难。
    • 大公司都有跟多服务器(华东地区,华南地区,华北地区,西北地区,西南地区等)

    集群概念

    • 集群式相互独立的,通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置用于提高可用性和可缩放性。

    当请求到来首先负载均衡服务器处理,把请求转发到另外一台服务器上。

    分类

    • 软件层面
      只有一台电脑,在这台电脑上启动了多个redis服务。

    • 硬件层面
      存在多台实体电脑,每台电脑上启动了一个或多个redis服务

    机器一:
    新建一个文件夹,建立7000.conf 7001.conf 7002.conf

    port 7000 #(7000-7002)
    bind 172.21.0.16
    #作为守护进程运行
    daemonize yes
    pidfile 7000.pid #(7000-7002)
    cluster-enabled yes
    cluster-config-file 7000_node.conf #(7000-7002)
    #连接集群的超时时间
    cluster-node-timeout 15000
    appendonly yes
    

    启动三个服务
    redis-server 7000.conf redis-server 7001.conf redis-server 7002.conf
    在这里插入图片描述
    机器二相同配置 (7003-7005)

    创建集群

    • redis的安装包中包含了redis-trib.rb,用于创建集群。

    • 接下来机器上进行操作

    • 将指令复制,这样可以在任何目录下调用此命令。
      sudo cp /usr/share/doc/redis-tools/examples /redis-trib.rb /usr/local/bin/

    • 安装ruby环境,因为redis-trib.rb是ruby开发的
      sudo apt-get install ruby

    • 安装redis相关依赖
      sudo gem install redis

    • 运行如下指令创建集群
      redis-trib.rb create --replicas 1 172.21.0.16:7000 172.21.0.16:7001 172.21.0.16:7002 172.21.0.16:7003 172.21.0.16:7004 172.21.0.16:7005

    在这里插入图片描述
    在这里插入图片描述

    Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value
    
    时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,
    
    这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大
    
    致均等的将哈希槽映射到不同的节点。
    

    槽的分配:
    在这里插入图片描述

    数据验证
    连接 redis,例如进入7002
    redis-cli -h 172.21.0.16 -c -p 7002
    在这里插入图片描述
    添加数据自动跳转服务器。

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    5 年,只为了一个更好的校验框架
    springboot 中 inputStream 神秘消失之谜
    没啥用的黑科技——自动生成测试对象信息框架
    投资中最简单的事
    一个提升英文单词拼写检测性能 1000 倍的算法?
    基于 junit5 实现 junitperf 源码分析
    关于 junit4 90% 的人都不知道的特性,详解 junitperf 的实现原理
    性能测试到底该怎么做?
    从代码生成说起,带你深入理解 mybatis generator 源码
    java 实现中英文拼写检查和错误纠正?可我只会写 CRUD 啊!
  • 原文地址:https://www.cnblogs.com/donghaoblogs/p/10579211.html
Copyright © 2011-2022 走看看