前言
#之前一直用的 redis3, 就想试试 redis4
#下载docker redis
docker pull redis:4.0.14
#下载ruby (redis的集群管理使用它)
docker pull ruby
#创建虚拟网卡
docker network create --subnet=172.20.0.0/16 redisnet
mkdir -p /Users/yuandeqiao/docker/rediscluster/{1,2,3,4,5,6}/
mkdir -p /Users/yuandeqiao/docker/rediscluster/{1/data,2/data,3/data,4/data,5/data,6/data}
mdir="/Users/yuandeqiao/docker/rediscluster"
cd $mdir/1/
touch redis.conf复制
查看配置文件
$ cat 1/redis.conf
##节点端口
port 6379
##cluster集群模式
cluster-enabled yes
##集群配置名
cluster-config-file nodes.conf
##超时时间
cluster-node-timeout 5000
##实际为各节点网卡分配ip 先用上网关ip代替
cluster-announce-ip 172.20.0.11
##节点映射端口
cluster-announce-port 6379
##节点总线端
cluster-announce-bus-port 16379
##持久化模式
appendonly yes
protected-mode no
#requirepass mypass
#masterauth mypass复制
查看不同配置文件差异
for i in 2 3 4 5 6
do
cp redis.conf $mdir/$i
done
$ diff 1/redis.conf 2/redis.conf
< cluster-announce-ip 172.20.0.11
---
> cluster-announce-ip 172.20.0.12
......
#手动修改了各个 redis.conf 的IP复制
启动容器
for i in 1 2 3 4 5 6
do
docker run -d -ti -p 700$i:6379 -p 1700$i:16379 --restart always -h=redis$i --name redis$i --net redisnet --privileged=true \
--ip 172.20.0.1$i \
-v $mdir/$i/redis.conf:/etc/redis/redis.conf \
-v $mdir/$i/data:/data \
redis:4.0.14 redis-server /etc/redis/redis.conf;\
done
# 创建集群
#redis4 上用 redis-trib.rb 创建集群(折腾了好一会命令参数
因为redis4 不支持 --cluster 参数。。。好吧!)
echo yes | docker run -i --rm --net redisnet ruby sh -c '\
gem install redis \
&& wget http://download.redis.io/releases/redis-4.0.14.tar.gz \
&& tar xvf redis-4.0.14.tar.gz && cd redis-4.0.14/src \
&& ruby redis-trib.rb create --replicas 1 \
'"$(for port in `seq 1 6`; do \
echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redisnet").IPAddress }}' "redis${port}")":6379' ' ; \
done)"
#上面命令相当于运行了:
ruby redis-trib.rb create --replicas 1 172.20.0.11:6379 172.20.0.12:6379 172.20.0.13:6379 172.20.0.14:6379 172.20.0.15:6379 172.20.0.16:6379复制
查看集群
docker exec -it redis1 /bin/bash -c "redis-cli -p 6379 cluster nodes"
# 确定是不是 随地儿 操作 整体同步
docker exec -it redis1 /bin/bash -c "redis-cli -c -p 6379 "
127.0.0.1:6379> set name "yuandeqiao"
-> Redirected to slot [5798] located at 172.20.0.12:6379
OK
172.20.0.12:6379>
yuandeqiaodeMacBook-Pro:rediscluster yuandeqiao$ docker exec -it redis6 /bin/bash -c "redis-cli -c -p 6379 "
127.0.0.1:6379> get name
-> Redirected to slot [5798] located at 172.20.0.12:6379
"yuandeqiao"
172.20.0.12:6379> del name
(integer) 1
yuandeqiaodeMacBook-Pro:rediscluster yuandeqiao$ docker exec -it redis1 /bin/bash -c "redis-cli -c -p 6379 "
127.0.0.1:6379> get name
-> Redirected to slot [5798] located at 172.20.0.12:6379
(nil)
172.20.0.12:6379> exit复制
文章转载自上官吕布,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Redis 8.0:开启一体化多功能开源数据平台新时代
老王两点中
147次阅读
2025-05-12 09:00:43
Redis 挂 AGPLv3 “战袍”,开源江湖风云突变
青年数据库学习互助会
80次阅读
2025-05-08 10:04:49
Redis改协议内幕曝光!核心开发者亲述被“踢出局”,外部贡献者几乎全跑光了!
老鱼笔记
52次阅读
2025-04-17 10:41:56
Redis数据库——Cluster集群模式
编程Cookbook
52次阅读
2025-04-16 15:34:44
亚马逊:MemoryDB,一款内存优先的云数据库
数据库应用创新实验室
38次阅读
2025-04-18 09:54:15
redis初识
chirpyli
37次阅读
2025-05-07 17:32:31
优雅遍历和删除特定开头的key
陌殇流苏
30次阅读
2025-04-25 12:17:03
Redis学习笔记
chirpyli
17次阅读
2025-05-13 15:40:30
Redis再次开源!reids8.0.0一键安装脚本分享
小周的数据库进阶之路
14次阅读
2025-05-08 10:04:52
Redis内存溢出故障排查
IT那活儿
14次阅读
2025-04-25 10:10:09