用Docker搭建分布式 Redis 的方法

使用 Docker 搭建一个分布式的 Redis 集群可以帮助你快速部署和管理多个 Redis 实例。一个典型的 Redis 集群包括多个主从节点,通过分片来实现数据的分布式存储与高可用性。

以下是使用 Docker 搭建分布式 Redis 集群的详细步骤:

前提条件

  • 安装 Docker 和 Docker Compose
  • 了解 Redis 集群的基本概念

步骤 1:创建 Redis 配置文件

首先,为每个 Redis 实例创建配置文件(redis.conf)。这里以 redis-node1.conf 为例:

port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

类似地,创建 redis-node2.conf, redis-node3.conf, redis-node4.conf, redis-node5.conf, 和 redis-node6.conf,这些文件的内容可以相同。

步骤 2:创建 Docker Compose 文件

创建一个 docker-compose.yml 文件来定义 Redis 集群的服务:

version: '3'services:redis-node1:image: redis:6.2container_name: redis-node1ports:- "6379:6379"volumes:- ./redis-node1.conf:/usr/local/etc/redis/redis.confcommand: redis-server /usr/local/etc/redis/redis.confnetworks:- redis-clusterredis-node2:image: redis:6.2container_name: redis-node2ports:- "6380:6379"volumes:- ./redis-node2.conf:/usr/local/etc/redis/redis.confcommand: redis-server /usr/local/etc/redis/redis.confnetworks:- redis-clusterredis-node3:image: redis:6.2container_name: redis-node3ports:- "6381:6379"volumes:- ./redis-node3.conf:/usr/local/etc/redis/redis.confcommand: redis-server /usr/local/etc/redis/redis.confnetworks:- redis-clusterredis-node4:image: redis:6.2container_name: redis-node4ports:- "6382:6379"volumes:- ./redis-node4.conf:/usr/local/etc/redis/redis.confcommand: redis-server /usr/local/etc/redis/redis.confnetworks:- redis-clusterredis-node5:image: redis:6.2container_name: redis-node5ports:- "6383:6379"volumes:- ./redis-node5.conf:/usr/local/etc/redis/redis.confcommand: redis-server /usr/local/etc/redis/redis.confnetworks:- redis-clusterredis-node6:image: redis:6.2container_name: redis-node6ports:- "6384:6379"volumes:- ./redis-node6.conf:/usr/local/etc/redis/redis.confcommand: redis-server /usr/local/etc/redis/redis.confnetworks:- redis-clusternetworks:redis-cluster:

步骤 3:启动 Redis 集群

在包含 docker-compose.yml 文件的目录中运行以下命令来启动 Redis 提供的全套服务:

docker-compose up -d

等待所有服务启动成功后,使用以下命令查看启动状态:

docker-compose ps

步骤 4:初始化 Redis 集群

连接到其中一个 Redis 容器,然后通过 Redis 命令行工具初始化集群:

docker exec -it redis-node1 redis-cli --cluster create \$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-node1):6379 \$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-node2):6379\$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-node3):6379 \$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-node4):6379 \$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-node5):6379 \$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-node6):6379 \--cluster-replicas 1

该命令会启动一个 Redis 集群,设置三个主节点(redis-node1、redis-node2、redis-node3),每个主节点有一个从节点(redis-node4、redis-node5、redis-node6)。--cluster-replicas 1 表示每个主节点有一个从节点。

你会看到一段输出,要求你确认分配,输入 yes 并按回车。

步骤 5:验证集群

确认集群初始化完成后,可以通过 Redis 命令行工具验证集群状态:

docker exec -it redis-node1 redis-cli -c 

在 Redis 命令行中,运行以下命令检查集群信息:

127.0.0.1:6379> cluster nodes

此命令应返回集群中所有节点的详细信息,包括它们的角色(主节点或从节点)、状态和与其他节点的连接情况。

完成!

到此为止,你已经使用 Docker 部署了一个带有 6 个 Redis 实例的分布式 Redis 集群系统。你可以通过 redis-cli 与集群进行交互,并执行各种 Redis 命令来测试和使用你的 Redis 集群。

总结

通过上述步骤,你可以快速搭建一个分布式的 Redis 环境,适用于开发和测试场景。当然,在生产环境中可能还需要考虑更多的安全、性能及运维管理的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/40808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Git-驯化】一文学会git配置用户信息,git config用法细节

【Git-驯化】一文学会git配置用户信息,git config用法细节 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 免费获取相关内容文档…

通过 url 下载文件的浏览器插件

大多数情况下访问 url 就会开始下载文件,但是由于文件格式等原因,下载可能不会开始或者失败,这时可以使用一些浏览器插件,例如 https://chromewebstore.google.com/detail/download-file-%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6/do…

Sourcecodester Fantastic Blog CMS v1.0 SQL 注入漏洞(CVE-2022-28512)

前言 CVE-2022-28512 是一个存在于 Sourcecodester Fantastic Blog CMS v1.0 中的 SQL 注入漏洞。攻击者可以通过 "/fantasticblog/single.php" 中的 id 参数注入恶意 SQL 查询,从而获得对数据库的未经授权的访问和控制。 漏洞详细信息 漏洞描述: 该漏…

2024 年第十四届 APMCM 亚太地区大学生数学建模竞赛赛题浅析

一图流: 赛题编号 赛题名称 涉及学科 所需模型 赛题复杂度 赛题难度 主要挑战 A 飞行器外形的优化问题 航空航天工程,数学,物理 几何模型,空气动力学模型,优化算法 高 高 精确计算飞行器表面积和体积&…

工具发送formdata请求 Multipartfile 接收

1.需求: 接收到 (Multipartfile file 文件 》使用工具转发到别的请求,将文件传到别的接口 主要代码: InputStreamResource inputstreamResource new InputstreamResource(file.getInputstream(), file.getoriginalfilename());MultiReso…

全网都在疯传的最新蓝海风口项目!

最近全网都在疯传这种视频,想必兄弟们都见到过了! 大家看这个号,1天的时间,2个作品,第2个直接就爆了,昨天看点赞还是3.8w,今天已经10w了,这是妥妥的风口啊! 大家有没有想…

应用在灯带Type-C接口上的PD SINK协议芯片ECP5701/ECP5702获取充电器的5V、9V、12V、15V、20V供电

方案背景 近日,欧盟就统一充电器接口的提案达成了一项政治协议,其中规定了在欧盟地区销售的所有手机或其他便携式中小型电子设备必须采用统一的USB Type-C接口。这项决定意味着未来将会有更多的产品强制性地使用TYPE-C充电接口。 在这个背景下&#xf…

day10:01集合

1 作用 Python中的集合(Set)是一个无序的、不包含重复元素的容器。它主要用于去重、成员测试、以及执行数学上的集合运算(如并集、交集、差集和对称差集)等操作。集合的内部实现通常基于哈希表,这提供了快速的成员测试…

wordpress 付费主题modown分享,可实现资源付费

该主题下载地址 下载地址 简介 Modown是基于Erphpdown 会员下载插件开发的付费下载资源、付费下载源码、收费附件下载、付费阅读查看隐藏内容、团购下载的WordPress主题,一款针对收费付费下载资源/付费查看内容/付费阅读/付费视频/VIP会员免费下载查看/虚拟资源售…

IT专业入门,高考假期预习指南:运维方向

七月来临,各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束,而是新旅程的开始。对于有志于踏入IT领域,尤其是想要学习运维方向的高考少年们,这个假期是开启探索IT世界的绝佳时机。提供一份全面的学习路线图,…

在Linux上查找文件的2个好用的命令

1. locate xx (查找带xx字符的所有文件或目录) 在终端输入命令 locate lua,可以看到,所有带lua字符的文件或目录都会被搜索出来。 2. find / -name xx (查找名为xx的文件或目录) 在终端输入命令 find …

SpringBoot集成beetl模板快速入门

在pom文件引入maven依赖 <dependency><groupId>com.ibeetl</groupId><artifactId>beetl-framework-starter</artifactId><version>1.1.81.RELEASE</version></dependency>写一个controller /*** author * create * descripti…

SecureCRT--使用sftp上传和下载文件

原文网址&#xff1a;SecureCRT--使用sftp上传和下载文件_IT利刃出鞘的博客-CSDN博客 简介 本文介绍SecureCRT如何在软件内直接上传和下载文件。 SecureCRT可以用如下两种方法上传和下载文件&#xff1a; 自带的sftp插件服务器安装rz/sz命令 本文介绍第一种方法&#xff0…

探索 Neo4j:图数据库的强大应用

探索 Neo4j&#xff1a;图数据库的强大应用 在现代数据驱动的世界中&#xff0c;关系数据的复杂性和规模不断增长&#xff0c;传统的关系数据库在处理高度连接数据时面临诸多挑战。Neo4j 作为领先的图数据库&#xff0c;通过其独特的图形数据模型和高效的查询语言&#xff0c;…

【Android面试八股文】Android性能优化面试题:怎样检测函数执行是否卡顿?

文章目录 卡顿一、可重现的卡顿二、不可重现的卡顿第一种方案: 基于 Looper 的监控方法第二种方案:基于 Choreographer 的监控方法第三种方案:字节码插桩方式第四种方案: 使用 JVMTI 监听函数进入与退出总结相关大厂的方案ArgusAPMBlockCanaryQQ空间卡慢组件Matrix微信广研参…

vue目录说明

vue目录说明 主要目录说明 .vscode - - -vscode工具的配置文件夹 node_modules - - - vue项目的运行依赖文件夹 public - - -资源文件夹&#xff08;浏览器图标&#xff09; src- - -源码文件夹 .gitignore - - -git忽略文件 index.html - - -入口html文件 package.json - - -…

C++ //练习 14.37 编写一个类令其检查两个值是否相等。使用该对象及标准库算法编写程序,令其替换某个序列中具有给定值的所有实例。

C Primer&#xff08;第5版&#xff09; 练习 14.37 练习 14.37 编写一个类令其检查两个值是否相等。使用该对象及标准库算法编写程序&#xff0c;令其替换某个序列中具有给定值的所有实例。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a…

系统架构设计师教程(清华第2版)<第1章 绪论>解读

系统架构设计师教程 第一章 绪论 1.1 系统架构概述1.1.1 系统架构的定义及发展历程1.1.2 软件架构的常用分类及建模方法1.1.3 软件架构的应用场景1.1.4 软件架构的发展未来1.2 系统架构设计师概述1.2.1 架构设计师的定义、职责和任务1.2.2 架构设计师应具备的专业素质1.3 如何成…

上份工作不干了24年5月-6月回顾(面试+软考)需要资料的小伙伴可以关注下

前言&#xff1a; 博主在5月和6月基本没有对博客内容进行更新了&#xff0c;不是博主偷懒&#xff0c;5月份博主在全力准备24年系统分析师的软考&#xff0c;6月份在准备面试&#xff0c;现在对5月和6月进行回顾&#xff1b; 先说下软考系统分析师&#xff1a; 博主实在今年3月…

记录OSPF配置,建立邻居失败的过程

1.配置完ospf后&#xff0c;在路由表中不出现ospf相关信息 [SW2]ospf [SW2-ospf-1]are [SW2-ospf-1]area 0 [SW2-ospf-1-area-0.0.0.0]net [SW2-ospf-1-area-0.0.0.0]network 0.0.0.0 Jul 4 2024 22:11:58-08:00 SW2 DS/4/DATASYNC_CFGCHANGE:OID 1.3.6.1.4.1.2011.5.25 .1…