18人参与 • 2025-12-02 • Redis
脚本是个好东西。使用脚本部署那是相当的快速。下面介绍一下我使用脚本+docker部署的步骤吧。
pull images redis:5.0.9-alpine3.11
port ${port}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 你的虚拟机ip
cluster-announce-port ${port}
cluster-announce-bus-port 1${port}
appendonly yes#!/bin/bash
for port in $(seq 8001 8006);
do
mkdir -p ./${port}/conf
port=${port} envsubst < ./redis/redis-cluster.tmpl > ./${port}/conf/redis.conf
mkdir -p ./${port}/data;
donechmod +x init.sh ./init.sh
version: '3.8'
services:
redis-8001:
image: redis:latest
container_name: redis-8001
ports:
- "8001:8001"
- "18001:18001"
volumes:
- ./8001/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./8001/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
networks:
- redis-cluster-net
redis-8002:
image: redis:latest
container_name: redis-8002
ports:
- "8002:8002"
- "18002:18002"
volumes:
- ./8002/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./8002/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
networks:
- redis-cluster-net
redis-8003:
image: redis:latest
container_name: redis-8003
ports:
- "8003:8003"
- "18003:18003"
volumes:
- ./8003/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./8003/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
networks:
- redis-cluster-net
redis-8004:
image: redis:latest
container_name: redis-8004
ports:
- "8004:8004"
- "18004:18004"
volumes:
- ./8004/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./8004/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
networks:
- redis-cluster-net
redis-8005:
image: redis:latest
container_name: redis-8005
ports:
- "8005:8005"
- "18005:18005"
volumes:
- ./8005/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./8005/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
networks:
- redis-cluster-net
redis-8006:
image: redis:latest
container_name: redis-8006
ports:
- "8006:8006"
- "18006:18006"
volumes:
- ./8006/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./8006/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
networks:
- redis-cluster-net
networks:
redis-cluster-net:
driver: bridgedocker compose up -d
docker exec -it reids-8001 redis-cli --cluster create \
192.168.59.128:8001 \
192.168.59.128:8002 \
192.168.59.128:8003\
192.168.59.128:8004 \
192.168.59.128:8005 \
192.168.59.128:8006 \
--cluster-replicas 1 // 副本数量·1 前三个节点成为主节点,后面三个节点成为从节点至此大功告成。
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-data-redis</artifactid>
</dependency>
<dependency>
<groupid>org.apache.commons</groupid>
<artifactid>commons-pool2</artifactid>
</dependency>spring:
data:
redis:
# 集群节点配置:填写你的虚拟机ip和端口
cluster:
nodes:
- 192.168.59.128:8001
- 192.168.59.128:8002
- 192.168.59.128:8003
- 192.168.59.128:8004
- 192.168.59.128:8005
# 最大重定向次数
max-redirects: 3
# 连接超时时间
timeout: 3000ms
# lettuce连接池配置 (可选但推荐)
lettuce:
pool:
max-active: 8
max-idle: 8
min-idle: 0
max-wait: -1ms@configuration
public class redisconfig {
@bean
public lettuceclientconfigurationbuildercustomizer clientconfigurationbuildercustomizer() {
return clientconfigurationbuilder -> clientconfigurationbuilder
.readfrom(readfrom.replica_preferred); // 优先从从节点读取
}
}可选取的读写分离政策:
redis-cli --cluster add-node <新节点ip:端口> <集群中任意已知节点ip:端口>
默认时主节点,此时新节点还没有分配任何的slot,需要重新分配slot。
redis-cli --cluster reshard <集群中任意已知节点ip:端口>
如果要设置成从节点
# 连接新节点 redis-cli -h <新从节点ip> -p <新从节点端口> # 设置主节点 cluster replicate <目标主节点id>
redis-cli --cluster del-node <集群中任意已知节点ip:端口> <要删除的从节点id>
删除主节点,把主节点的slot迁移到其他主节点在进行删除
redis-cli --cluster reshard <集群中任意已知节点ip:端口>
到此这篇关于redis分片集群的部署和使用的文章就介绍到这了,更多相关redis分片集群部署内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论