首页 > 数据库 >2024年2月笔记:Redis7.2.4版本在Mac电脑的Docker里安装Redis集群

2024年2月笔记:Redis7.2.4版本在Mac电脑的Docker里安装Redis集群

时间:2024-02-03 14:24:10浏览次数:22  
标签:Redis7.2 cluster -- redis Redis 2024 6379 0.0 172.18

本文环境:Mac电脑,Brew和Docker都已安装好,Redis版本: 7.2.4

第1步,验证Docker和Brew

docker --version     // 查看docker版本,此处忽略安装Docker步骤

brew --version      //查看版本号

第2步,创建Redis集群网络

docker network create redis-cluster-net       // 创建一个名为redis-cluster-net的集群网络

第3步,安装6个Redis节点

在CMD里依次分6次执行下面6行命令:

第1次执行:docker run -d --name redis_node_1 --net redis-cluster-net -p 7001:6379 redis redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --bind 0.0.0.0 --requirepass myredis
第2次执行:docker run -d --name redis_node_2 --net redis-cluster-net -p 7002:6379 redis redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --bind 0.0.0.0 --requirepass myredis
第3次执行:docker run -d --name redis_node_3 --net redis-cluster-net -p 7003:6379 redis redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --bind 0.0.0.0 --requirepass myredis
第4次执行:docker run -d --name redis_node_4 --net redis-cluster-net -p 7004:6379 redis redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --bind 0.0.0.0 --requirepass myredis
第5次执行:docker run -d --name redis_node_5 --net redis-cluster-net -p 7005:6379 redis redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --bind 0.0.0.0 --requirepass myredis
第6次执行:docker run -d --name redis_node_6 --net redis-cluster-net -p 7006:6379 redis redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --bind 0.0.0.0 --requirepass myredis

以上指令参数分析:

--name redis_node_1       // 节点名称,六个节点,6个名称

--net redis-cluster-net      // 设置集群网络

 -p 7001:6379                   // 端口映射:把docker容器里的6379端口映射到宿主机的7001

--port 6379                     // redis端口

--cluster-enabled yes      // 启用集群

--cluster-config-file nodes.conf      // 集群配置

--cluster-node-timeout 5000         // 集群5秒超时时间

--appendonly yes 

--bind 0.0.0.0                 // 所有IP都通用

--requirepass myredis     // 设置redis访问密码,用于后续redis cluster,这里设置的密码是:myredis

第4步,获取6个节点的Docker容器IP地址

docker ps       // 执行该指令获得每一个节点的container ID

zhuw118@DWN4T9CF61 ~ % docker ps                                                                                                       

CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS             PORTS                    NAMES

91a40f55111c   redis          "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:7006->6379/tcp   redis_node_6

1c5ab47d21e6   redis          "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:7005->6379/tcp   redis_node_5

eb845a117356   redis          "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:7004->6379/tcp   redis_node_4

f0ae829078ec   redis          "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:7003->6379/tcp   redis_node_3

81d5b5648902   redis          "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:7002->6379/tcp   redis_node_2

2e8631603678   redis          "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:7001->6379/tcp   redis_node_1

以节点1为例,获得节点1容器的IP地址指令为:   

docker inspect 2e8631603678       // 执行完指令之后,从一大堆返回的Json对象里找到IPAddress字段的值就是IP,举例:"IPAddress": "172.18.0.7" 

第5步,创建Redis集群

参数-a myredis表明指定redis cluster的密码为myredis,从第4步为每一个节点获取IP之后,创建Redis集群指令:  

docker exec -it redis_node_1 redis-cli --cluster create 172.18.0.2:6379 172.18.0.3:6379 172.18.0.4:6379 172.18.0.5:6379 172.18.0.6:6379 172.18.0.7:6379 --cluster-replicas 1 -a myredis

以下是执行上述指令的整个执行过程,过程中需要手动输入yes:

zhuw118@DWN4T9CF61 ~ % docker exec -it redis_node_1 redis-cli --cluster create 172.18.0.2:6379 172.18.0.3:6379 172.18.0.4:6379 172.18.0.5:6379 172.18.0.6:6379 172.18.0.7:6379 --cluster-replicas 1 -a myredis

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

>>> Performing hash slots allocation on 6 nodes...

Master[0] -> Slots 0 - 5460

Master[1] -> Slots 5461 - 10922

Master[2] -> Slots 10923 - 16383

Adding replica 172.18.0.6:6379 to 172.18.0.2:6379

Adding replica 172.18.0.7:6379 to 172.18.0.3:6379

Adding replica 172.18.0.5:6379 to 172.18.0.4:6379

M: 6e3def316890a3199250abb5939d83eb8e08167a 172.18.0.2:6379

   slots:[0-5460] (5461 slots) master

M: 5e505fb61243affe0be53e460162a7d21453cb00 172.18.0.3:6379

   slots:[5461-10922] (5462 slots) master

M: 620cc2469d42fe7ad5926e97a2592540e0d84d81 172.18.0.4:6379

   slots:[10923-16383] (5461 slots) master

S: f6fbf813273a01967751460b4abd8ebde5d21954 172.18.0.5:6379

   replicates 620cc2469d42fe7ad5926e97a2592540e0d84d81

S: e4ab08c6d21283ebb4b6583744f5727e51d5e9c5 172.18.0.6:6379

   replicates 6e3def316890a3199250abb5939d83eb8e08167a

S: 531a72fac638744f4a755962058a64f3ef062cfb 172.18.0.7:6379

   replicates 5e505fb61243affe0be53e460162a7d21453cb00

Can I set the above configuration? (type 'yes' to accept): yes      // 需要手动输入yes的地方

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join

.

>>> Performing Cluster Check (using node 172.18.0.2:6379)

M: 6e3def316890a3199250abb5939d83eb8e08167a 172.18.0.2:6379

   slots:[0-5460] (5461 slots) master

   1 additional replica(s)

M: 620cc2469d42fe7ad5926e97a2592540e0d84d81 172.18.0.4:6379

   slots:[10923-16383] (5461 slots) master

   1 additional replica(s)

S: f6fbf813273a01967751460b4abd8ebde5d21954 172.18.0.5:6379

   slots: (0 slots) slave

   replicates 620cc2469d42fe7ad5926e97a2592540e0d84d81

S: e4ab08c6d21283ebb4b6583744f5727e51d5e9c5 172.18.0.6:6379

   slots: (0 slots) slave

   replicates 6e3def316890a3199250abb5939d83eb8e08167a

M: 5e505fb61243affe0be53e460162a7d21453cb00 172.18.0.3:6379

   slots:[5461-10922] (5462 slots) master

   1 additional replica(s)

S: 531a72fac638744f4a755962058a64f3ef062cfb 172.18.0.7:6379

   slots: (0 slots) slave

   replicates 5e505fb61243affe0be53e460162a7d21453cb00

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.       // 所有slot分配完毕,Redis集群创建成功

第6步,删除Docker里的Redis集群和网络

  1. 首先,使用docker ps -a命令查看当前正在运行的容器列表。确认Redis集群相关的容器已经处于停止状态。如果没有停止,则需要先停止这些容器。

  2. 然后,使用docker rm <container_id>命令来删除每个Redis节点对应的容器。其中,为每个Redis节点所对应的容器ID。重复此步骤直到删除完所有Redis节点的容器。

  3. 接下来,使用docker network ls命令查看网络列表,并记录Redis集群所属的网络名称(network name)。

  4. 最后,使用docker network rm <network_name>命令来删除该网络。其中,为第三步中获取到的Redis集群所属的网络名称。

  5. 至此,Redis集群及其相关容器都被成功从Docker中删除了。

 

end.

标签:Redis7.2,cluster,--,redis,Redis,2024,6379,0.0,172.18
From: https://www.cnblogs.com/zhuwenjoyce/p/18004737

相关文章

  • ICLR 2024 | Mol-Instructions: 面向大模型的大规模生物分子指令数据集
    Mol-Instructions:面向大模型的大规模生物分子指令数据集 发表会议:ICLR2024论文标题:Mol-Instructions:ALarge-ScaleBiomolecularInstructionDatasetforLargeLanguageModels论文链接:https://arxiv.org/pdf/2306.08018.pdf代码链接:https://github.com/zjunlp/Mol......
  • 20240202
    UI开发的学习,XML和JetpackComposeXML编写界面的基础使用XML添加控件,在对应的XML文件中添加控件元素,然后添加对应的属性改变样式<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" ...> ... <TextView android:id="@+id/textView" android:lay......
  • 20240203-图论随记
    最短路负环判断#include<bits/stdc++.h>usingnamespacestd;structnode{intfrom,to,v;}edge[100005];#defineoo2000000000intdis[100005];intmain(){intn,m,s,t;cin>>n>>m>>s>>t;for(inti=1;i<=m;i++){......
  • 20240130-DP以及优化随记
    状态转移方程递归关系(从已知求得未知的表达式)背包dp0-1背包,多重,完全,混合模版套用//多重背包#include<bits/stdc++.h>usingnamespacestd;constintN=507,M=1e5+7;intp,n,x,y,z,dp[10005];intmain(){ cin>>p>>n; for(inti=1;i<=n;i++){ scanf("%d%d......
  • 20240201-高级数据结构随记
    intmain(){intn;cin>>n;for(inti=1;i<=n;i++){scanf("%d",&a[i]);sum[i]=sum[i-1]+a[i];}intmn=sum[0];for(inti=1;i<=n;i++){//枚举右端点if(sum[i]-mn>ans)ans=sum[i]-mn;......
  • 20240202-训练赛随记
    机场检录//二分#include<bits/stdc++.h>usingnamespacestd;longlongn,m,a[100005];boolcheck(longlongx){longlongt=0;for(inti=1;i<=n;i++)t+=(x/a[i]);returnt>=m;}intmain(){cin>>n>>m;for(inti=1;i<......
  • 20240201-高级数据结构总结
    待办:倍增并查集线段树合并set逆序对树动态开点线段树套用模版#include<bits/stdc++.h>usingnamespacestd;#defineM100005#definelllonglongstructnode{ intL,R,cnt,vis;}tree[400005];inta[M],b[M],c[M],f[M];voidbuild(intp,intl,intr){ tre......
  • 2024-02-03:用go语言,你有 k 个背包。给你一个下标从 0 开始的整数数组 weights, 其中 we
    2024-02-03:用go语言,你有k个背包。给你一个下标从0开始的整数数组weights,其中weights[i]是第i个珠子的重量。同时给你整数k,请你按照如下规则将所有的珠子放进k个背包。没有背包是空的。如果第i个珠子和第j个珠子在同一个背包里,那么下标在i到j之间的所有珠......
  • 2024七上期末考游记
    省流:炸了Day1:语文感觉炸了。。。没有选择题,大题全炸了,书写也难看的跟一坨一样作文写的是题目二,写的变身白云的一天。预估70-80地理考完彻底炸了,侯爷爷上课强调过的印度北部是白种人忘了。。。好像当时正和后桌聊天呢预估85-95中午忘了吃了啥,反正RP--英语考出来原题......
  • 2024.2.2寒假每日总结24
    算法题:1686.石子游戏VI-力扣(LeetCode)最最简单的超级马里奥训练过程fromnes_py.wrappersimportJoypadSpaceimportgym_super_mario_brosfromgym_super_mario_bros.actionsimportSIMPLE_MOVEMENTimporttimefrommatplotlibimportpyplotaspltfromstable_basel......