主从配置 |  集群配置

redis主从

主从配置原因:

1.到达读写分离,读的操作和写操作比例10 : 1读数据频繁,写数据次数少,这样可以配置1个master数据库用来写数据,配置多个slave从数据库来满足读取操作
2.降低服务器压力,读取数据访问的速度加快
3.主的数据库会将修改内容同步到从的数据库-数据备份

配置步骤:

配置主:

  1.修改etc/redis/redis.conf文件:

    bind 主数据库ip地址

    port 主数据库端口号

  2.重启redis服务

    sudo service redis stop

    redis-server redis.conf

配置从:

  1.复制etc/redis/redis.conf文件

    sudo cp redis.conf slaveof.conf

  2.修改etc/redis/redis.conf文件

    2.0 sudo vim slaveof.conf

    2.1 bind 从数据库ip

    

    2.2 port 从数据库端口

    

    2.3 修改slaveof 主数据库ip地址 主数据库端口号

    

  3.重启redis服务

    3.1 最好先干掉之前的redis服务

      px aux | grep redis

      sudo kill -9 pid

      

    3.2 分别启动主/从服务

      sudo redis-server redis.conf

      sudo redis-server slaveof.conf

  4.查看主从关系

    redis-cli -h ip地址 -p 端口 info Replication

    

测试数据

  1. master主服务

    1.1 进入master客户端: redis-cli -h -p 6379

    1.2 master上写入测试数据

      set name james

  2. slaveof从服务

    2.1 进入slaveof客户端: redis-cli -h -p 6378

    2.2 读取数据

      get name

      

redis简单的主从配置就这样

redis集群

集群配置原因

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

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

  

配置步骤

1.在redis-config(集群目录)目录下创建配置文件7000.conf,7001.conf,7002.conf,7003.conf,7004.conf,7005.conf

  注: 集群最少需要6个服务器

  1.1 在配置文件中进行如下配置:

    port 端口

    bind ip地址

    daemonize yes

    pidfile 7000.pid  # 对应服务器进程的pid

    cluster-enabled yes  # 开启集群

    cluster-config-file 7000_node.conf  # node节点文件

    cluster-node-timeout 15000

    appendonly yes

2. 使用相应的配置文件启动redis服务

  redis-server 7000.conf

  redis-server 7001.conf

  redis-server 7002.conf

  redis-server 7003.conf

  redis-server 7004.conf

  redis-server 7005.conf

  ps aux | grep redis

  

3. 创建集群

  • 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
  •   

  创建之前先确认一下gem源地址 : 国外的地址因为某种原因...

    -- 先查看使用的 gem 源是什么地址
    gem source -l -- 如果是https://rubygems.org/ 就需要更换
    -- 更换指令为
    gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.com/ # 之前国内的.org域名已经失效
    -- 通过 gem 安装 redis 的相关依赖
    sudo gem install redis
    -- 然后重新执⾏指令
        # redis-trib.rb : 创建集群的命令关键字
        # create: 创建集群
        # --replicas 1 :设置集群的对应关系 1:1对1的关系(一个master对应一个slave)
         redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
 
    会提示如下主从信息: 并输入yes
 
    

    提示success 创建完成

数据测试

  **集群创建成功后,所有的服务器都是master 没有主从之分

  

   **从上图可以看到前三个7000,7001,7002 都有一个slots卡槽地址 范围(16384)  , 数据必须要在有卡槽的地方进行一个写入和读取, 而没有卡槽的服务器则需要借助有卡槽的服务器来进行数据的写入和读取    

  1. 加入集群 注意连接服务器 -c:表示加入集群

    redis-cli -h 127.0.0.1 -c -p 7002

  2. 写入数据

    set name durant

    

    由于7005并没有卡槽,所以它借用了卡槽地址为5798的服务器 , 并且重定向到了7001服务器

  3. 读取数据并且修改数据

    get name

    set age 18

    

    **这说明了集群中任意服务器均可以进行读写数据的操作,数据完全共享

      数据存储在哪个卡槽地址中,读取要去卡槽地址对应的端口(ip)去读取

    **关于卡槽值如何计算并分配写入数据

      CRC16算法

        具体算法:CRC16(key) % 16384

      

      Redis集群没有并使用传统的一致性哈希来分配数据,而是采用另外一种叫做哈希 槽 (hash slot)的公式来分配的。

      redis cluster 默认分配了 16384 个slot,当我们 set一个key 时,会用CRC16算法来取模得到所属的slot,然后将这个key 分到哈 希槽区间的节点上,

      具体算法就是:CRC16(key) % 16384。所以我们在测试的 时候看到set 和 get 的时候,直接跳转到了7000端口的节点

      

至此,一个简单的redis集群就基本配置完毕了

redis 主从配置和集群配置的更多相关文章

  1. Redis高可用之集群配置(六)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  2. Redis 3.0 Cluster集群配置

    Redis 3.0 Cluster集群配置 安装环境依赖 安装gcc:yum install gcc 安装zlib:yum install zib 安装ruby:yum install ruby 安装 ...

  3. kubernetes部署redis主从高可用集群

    1.redis主从高可用集群结构 2.k8s部署有状态的服务选择 对于K8S集群有状态的服务,我们可以选择deployment和statefulset statefulset service& ...

  4. Redis简单梳理及集群配置

    **REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵 ...

  5. redis + 主从 + 持久化 + 分片 + 集群 + spring集成

    Redis是一个基于内存的数据库,其不仅读写速度快,每秒可以执行大约110000的写操作,81000的读取操作,而且其支持存储字符串,哈希结构,链表,集合丰富的数据类型.所以得到很多开发者的青睐.加之 ...

  6. redis主从切换的集群管理

    集群配置最少需要三台机器,那么我就三台虚拟机,三台虚拟机分别安装同样的redis的环境ip分别:192.168.9.17 (redis sentinel 集群监控)192.168.9.18 (redi ...

  7. Redis主从哨兵和集群搭建

    主从配置 哨兵配置 集群配置 1.主从: 国王和丞相,国王权力大(读写),丞相权利小(读) 2.哨兵: 国王和王子,国王死了(主服务挂掉),王子继位(从服务变主服务) 3.集群: 国王和国王,一个国王 ...

  8. Redis集合 安装 哨兵集群 配置

    redis相关 redis基础 redis发布订阅 redis持久化RDB与AOF redis不重启,切换RDB备份到AOF备份 redis安全配置 redis主从同步 redis哨兵集群 redis ...

  9. redis相关笔记(二.集群配置及使用)

    redis笔记一 redis笔记二 redis笔记三 1.配置:在原redis-sentinel文件夹中添加{8337,8338,8339,8340}文件夹,且复制原8333中的配置 在上述8333配 ...

随机推荐

  1. openwrt挂载摄像头及视频保存

    一.编译选项的选择: -> Utilities ->usbutils (这个里面包含lsusb的命令,是查看你的摄像头型号的) -> Kernel modules -> I2C ...

  2. 启动代码和Bootloader区别

    很多人都会把两者混淆,所以这里稍微说一下. 启动代码和Bootloader有点类似于类和结构体的关系,也就是说结构体只是一种很特殊很特殊的类,但不能说类是一种结构体. 也就是说可以说启动代码是Boot ...

  3. 如何让classmethod只允许使用用类对象来调用

    Django REST framework里面有这样一段代码,在网上查@classonlymethod的意思是使得classmethod只允许使用用类对象来调用 @classonlymethod de ...

  4. 实例快速上手UDP和TCP的使用

    TCP和UDP两个协议在Java通信编程中是如何被使用的 UDP协议与TCP协议之间的区别不再分析,主要是分析一下这两个协议在Java通信编程中是如何被使用的.首先介绍TCP,对于TCP,Java语言 ...

  5. 阿里云ECS服务器环境搭建——ubuntu16.04图形界面的安装

    阿里云ECS服务器环境搭建——ubuntu16.04图形界面的安装 最近琢磨着想在服务器上搭建一个hexo博客,于是就在阿里云上买了一个云服务器ECS,远程接入后默认给的是一个命令窗口,没有图形界面, ...

  6. 学习笔记之Introduction to Data Visualization with Python | DataCamp

    Introduction to Data Visualization with Python | DataCamp https://www.datacamp.com/courses/introduct ...

  7. PHP中常用的数组函数总结

    整理了一份PHP开发中数组操作大全,包含有数组操作的基本函数,数组的分段和填充,数组与栈,数组与列队,回调函数,排序,计算,其他的数组函数等. 一,数组操作的基本函数 数组的键名和值 array_va ...

  8. http、TCP/IP协议与socket之间的区别(转载)

    http.TCP/IP协议与socket之间的区别  https://www.cnblogs.com/iOS-mt/p/4264675.html http.TCP/IP协议与socket之间的区别   ...

  9. javaScript read blob

    http://www.cnblogs.com/wangfajing/p/7202139.html?utm_source=itdadao&utm_medium=referral

  10. MySQL MHA 搭建&测试(环境:CentOS7 + MySQL5.7.23)

    MySQL MHA架构介绍: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Face ...