Redis学习整理

个人学习思维导图

在这里插入图片描述
自己整理的思维导图,后续按照导图一步一步进行笔记整理,补充到文章里

redis-cluster集群搭建步骤

备注:采用一台linux centos7服务器模拟集群

  1. 创建一个redis-cluster文件夹,后续在此文件夹下搭建集群。

  2. 创建6个文件夹,作为6个节点,三主三从,分别是:6368 6369 6378 6379 6388 6389。

  3. 上述6个文件夹下分别创建conf和data,作为防止每个节点配置文件以及数据的地方。1-3步骤截图

  4. 将标准的redis.conf下载后进行修改,放进6368 6369等文件下的conf目录下。在这里插入图片描述
    这里修改的是绑定的主机地址,设置成0.0.0.0是为了处理所有请求,这样设置不是合理,可以设置成本机的ip。
    在这里插入图片描述
    这里设置的是集群的密码,从节点必须与主节点的密码保持一致,这里都设置成一样的。
    在这里插入图片描述
    这是设置redis的密码,我设置的和上述的masterauth一致
    在这里插入图片描述
    开启集群,cluster-config-file是集群配置文件,集群节点自动维护
    在这里插入图片描述
    cluster-announce-port:集群节点映射端口
    cluster-announce-bus-port:集群总线端口
    经过上述修改后,放进6368 6369等文件下的conf目录下,作为redis启动的配置文件。

  5. 配置docker-compose-redis.yml文件,通过docker-compose来启动多个docker任务容器,即启动三主三从,命名分别为redis-m1、redis-m2、redis-m3、redis-s1、redis-s2、redis-s3,采用的镜像是redis:6.2.5版本。

version: '2'
services:
  redis1:
    mem_limit: 512m
    image: redis:6.2.5   #自己的仓库地址,我这里隐藏了我的仓库名称
    restart: always #表示docker重启时,该任务容器也会重启
    container_name: redis-m1 #容器名称
    ports:
      - 6368:6379 #6379映射到主机6368
      - 16368:16379 #16379映射到主机16368
    command:
      redis-server /etc/redis/redis.conf 
    volumes:
      - ./6368/data:/data #数据映射到6368文件夹下data文件夹
      - ./6368/conf/redis.conf:/etc/redis/redis.conf #配置文件映射到6368文件夹下conf文件夹
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  redis2:
    mem_limit: 512m
    image: redis:6.2.5
    restart: always
    container_name: redis-m2
    ports:
      - 6378:6379
      - 16378:16379
    command:
      redis-server /etc/redis/redis.conf
    volumes:
      - ./6378/data:/data
      - ./6378/conf/redis.conf:/etc/redis/redis.conf
    logging:
      options:
        max-size: "10m"
        max-file: "10"

  redis3:
    mem_limit: 512m
    image: redis:6.2.5
    restart: always
    container_name: redis-m3
    ports:
      - 6388:6379
      - 16388:16379
    command:
      redis-server /etc/redis/redis.conf
    volumes:
      - ./6388/data:/data
      - ./6388/conf/redis.conf:/etc/redis/redis.conf
    logging:
      options:
        max-size: "10m"
        max-file: "10"    

  redis4:
    mem_limit: 512m
    image: redis:6.2.5
    restart: always
    container_name: redis-s1
    ports:
      - 6369:6379
      - 16369:16379
    command:
      redis-server /etc/redis/redis.conf
    volumes:
      - ./6369/data:/data
      - ./6369/conf/redis.conf:/etc/redis/redis.conf
    logging:
      options:
        max-size: "10m"
        max-file: "10" 

  redis5:
    mem_limit: 512m
    image: redis:6.2.5
    restart: always
    container_name: redis-s2
    ports:
      - 6379:6379
      - 16379:16379
    command:
      redis-server /etc/redis/redis.conf
    volumes:
      - ./6379/data:/data
      - ./6379/conf/redis.conf:/etc/redis/redis.conf
    logging:
      options:
        max-size: "10m"
        max-file: "10" 

  redis6:
    mem_limit: 512m
    image: redis:6.2.5
    restart: always
    container_name: redis-s3
    ports:
      - 6389:6379
      - 16389:16379
    command:
      redis-server /etc/redis/redis.conf
    volumes:
      - ./6389/data:/data
      - ./6389/conf/redis.conf:/etc/redis/redis.conf
    logging:
      options:
        max-size: "10m"
        max-file: "10"          
networks:
  default:
    external:
      name: myDocker #这是你创建的网桥 可在这一步之前先执行sudo docker network create myDocker 创建容器虚拟网桥

  1. docker-compose -f docker-compose-redis.yml up -d 启动6个容器任务,代表6个节点。
    在这里插入图片描述

  2. docker inspect <各容器id> |grep IPAddress 查看各容器的虚拟IP
    在这里插入图片描述

  3. docker exec -it redis-m1 bash 进入到其中一个节点容器

  4. redis-cli --cluster create 172.17.0.4:6379 172.17.0.5:6379 172.17.0.6:6379 172.17.0.2:6379 172.17.0.7:6379 172.17.0.3:6379 --cluster-replicas 1 -a <password> 如果在redis.conf里设置了密码,这里就需要加上-a <password>,否则则不需要,如果出现了[ERR] Node 172.17.0.4:6379 NOAUTH Authentication required.则表示需要密码。

  5. 运行第9点的命令后,中间会出现输入yes or no,输入yes后,若出现[OK] All 16384 slots covered.则表示成功。

  6. redis-cli -c -a <你的password> 链接到redis,-c表示集群,-a表示密码,如果设置了一定要输入,不然每次重定向到新的节点都会出现-> Redirected to slot [12299] located at 172.17.0.6:6379 (error) NOAUTH Authentication required.这样的错,而且在set的时候如果重定向到其他节点,但是又没有权限,最后使用get获取该key的值的时候会返回 (nil)
    在这里插入图片描述

  7. 此时输入cluster info可以获取集群信息,如果出现NOAUTH Authentication required.则表示没有权限,此时可以通过 auth <你的password>认证,出现ok则表示成功。再次输入cluster info,可获取集群信息。
    在这里插入图片描述
    上述是在一个服务器上模拟redis-cluster集群,实际开发中会在多个服务器上,会有不同,后续去尝试一下多服务器,再来补充。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值