当前位置: 首页 > news >正文

Docker 中快速构建 Redis Cluster 集群

Docker 中快速构建 Redis Cluster 集群

目录

  1. 前言
  2. 环境准备
    • 所需软件
    • 配置网络
  3. 构建 Redis Cluster 镜像
    • 创建自定义 Dockerfile
    • 构建镜像
  4. 启动 Redis 节点容器
    • 启动命令
  5. 配置 Redis Cluster 集群
    • 创建 Redis 集群
    • 验证集群状态
  6. 总结

前言

Redis 是一个高性能的键值对数据库,常被用作缓存、消息队列等用途。Redis Cluster 集群模式提供了数据分区和高可用性,通过分布式方式存储和管理数据,实现更高的扩展性。本指南将演示如何使用 Docker 快速构建一个包含 3 个节点的 Redis Cluster 集群。

环境准备

所需软件

  • Docker:确保已安装 Docker,版本最好在 19.03.0 或以上。
  • redis-cli:用于操作 Redis 集群,可以从 Redis 官方获取。

配置网络

为了让 Docker 容器之间能够互相通信,我们需要创建一个自定义网络:

docker network create redis-cluster

这将创建一个名为 redis-cluster 的 Docker 网络。

构建 Redis Cluster 镜像

创建自定义 Dockerfile

我们需要在 Redis 镜像中添加用于配置集群的工具。创建一个目录并添加以下 Dockerfile:

# 文件:Dockerfile
FROM redis:7.0RUN apt-get update && apt-get install -y --no-install-recommends \ruby-full \&& gem install redisCOPY redis.conf /usr/local/etc/redis/redis.confCMD ["redis-server", "/usr/local/etc/redis/redis.conf"]

同时,在相同目录下创建 redis.conf 配置文件:

# 文件:redis.conf
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

构建镜像

在上述 Dockerfile 文件所在的目录执行以下命令:

docker build -t redis-cluster .

这将构建一个带有集群配置的自定义 Redis 镜像 redis-cluster

启动 Redis 节点容器

启动命令

我们将使用上面创建的网络 redis-cluster 和自定义镜像 redis-cluster,分别启动 3 个 Redis 实例:

docker run -d --name redis-node1 --net redis-cluster -p 7001:6379 redis-cluster
docker run -d --name redis-node2 --net redis-cluster -p 7002:6379 redis-cluster
docker run -d --name redis-node3 --net redis-cluster -p 7003:6379 redis-cluster

此时我们已经启动了 3 个 Redis 实例,各自映射到主机的 700170027003 端口。

配置 Redis Cluster 集群

创建 Redis 集群

使用容器中的 redis-cli 工具配置 Redis Cluster 集群:

docker exec -it redis-node1 redis-cli --cluster create \172.18.0.2:6379 \172.18.0.3:6379 \172.18.0.4:6379 \--cluster-replicas 0

其中 172.18.0.X 是各个 Redis 容器的内部 IP 地址。可以使用以下命令获取 IP 地址:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-node1
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-node2
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-node3

验证集群状态

要验证集群是否正常工作,请使用 redis-cli 连接到其中一个节点并运行 cluster info 命令:

docker exec -it redis-node1 redis-cli -c -p 6379 cluster info

或者直接使用以下命令查看每个节点的状态:

docker exec -it redis-node1 redis-cli -c -p 6379 cluster nodes

总结

准备环境、构建自定义镜像、启动 Redis 节点到配置集群,搭建了一个 3 节点的 Redis Cluster 集群。通过集群的分布式特性,可以获得更高的性能和可扩展性。

相关文章:

Docker 中快速构建 Redis Cluster 集群

Docker 中快速构建 Redis Cluster 集群 目录 前言环境准备 所需软件配置网络 构建 Redis Cluster 镜像 创建自定义 Dockerfile构建镜像 启动 Redis 节点容器 启动命令 配置 Redis Cluster 集群 创建 Redis 集群验证集群状态 总结 前言 Redis 是一个高性能的键值对数据库&am…...

C语言----杨辉三角

各位看官们好。学习到这里想必大家应该对C语言的了解也是很深刻的了吧。但是我们也不能忘记我们一起学习的知识啊。在我们以前学习C语言的时候我想大家应该都听说过杨辉三角吧。虽然我们把其中的规律找到那么这个代码就简单很多了。那么接下里我们就来讲讲杨辉三角。 首先我们先…...

FlaUI

FlaUI是一个基于微软UIAutomation技术(简称UIA)的.NET库,它主要用于对Windows应用程序(如Win32、WinForms、WPF、Store Apps等)进行自动化UI测试。FlaUI的前身是TestStack.White,由Roemer开发,旨…...

MySQL调优-01反范式化表设计

MySQL调优-01反范式化表设计 数据库设计三范式 第一范式(1NF)。确保数据库表的每一列都是不可分割的原子数据项,即列中不可包含数组、记录等非原子数据项;确保表中没有重复的属性或列,每个属性只出现一次,…...

74从零开始学Java之排序算法中的冒泡和选择排序

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们要想成为一个优秀的程序员,其实非常关键的一点就是要锻炼培养自己的编程思维,就好比一个狙击手,要通过大量的射击训练要用大量的子弹喂出来。同样的…...

【Qt问题】VS2019 Qt win32项目如何添加x64编译方式

往期回顾: 【Qt问题】Qt常用快捷键汇总-CSDN博客 【Qt问题】Qt Creator 如何链接第三方库-CSDN博客 【Qt问题】Qt 如何带参数启动外部进程-CSDN博客 【Qt问题】VS2019 Qt win32项目如何添加x64编译方式 我们都知道vs2019在编译项目的时候是需要选择编译环境的&…...

LabVIEW换智能仿真三相电能表研制

LabVIEW换智能仿真三相电能表研制 在当前电力工业飞速发展的背景下,确保电能计量的准确性与公正性变得尤为重要。本文提出了一种基于LabVIEW和单片机技术,具有灵活状态切换功能的智能仿真三相电能表,旨在通过技术创新提高电能计量人员的培训…...

Python | Leetcode Python题解之第69题x的平方根

题目&#xff1a; 题解&#xff1a; class Solution:def mySqrt(self, x: int) -> int:if x 0:return 0C, x0 float(x), float(x)while True:xi 0.5 * (x0 C / x0)if abs(x0 - xi) < 1e-7:breakx0 xireturn int(x0)...

libhv http client vs cpr

libhv http client 和 cpr 的性能对比 libhv test code static void test_http_async(HttpClient* cli, int seq, int* resp_cnt) {auto req std::make_shared<HttpRequest>();req->method HTTP_GET;req->url "www.baidu.com";req->timeout 1…...

CTFHub-Web-文件上传

CTFHub-Web-文件上传-WP 一、无验证 1.编写一段PHP木马脚本 2.将编写好的木马进行上传 3.显示上传成功了 4.使用文件上传工具进行尝试 5.连接成功进入文件管理 6.上翻目录找到flag文件 7.打开文件查看flag 二、前端验证 1.制作payload进行上传发现不允许这种类型的文件上传 …...

笔记2:cifar10数据集获取及pytorch批量处理

&#xff08;1&#xff09;cifar10数据集预处理 CIFAR-10是一个广泛使用的图像数据集&#xff0c;它由10个类别的共60000张32x32彩色图像组成&#xff0c;每个类别有6000张图像。 CIFAR-10官网 以下为CIFAR-10数据集data_batch_*表示训练集数据&#xff0c;test_batch表示测试…...

FSD自动驾驶泛谈

特斯拉的FSD&#xff08;Full-Self Driving&#xff0c;全自动驾驶&#xff09;系统是特斯拉公司研发的一套完全自动驾驶系统。旨在最终实现车辆在多种驾驶环境下无需人类干预的自动驾驶能力。以下是对FSD系统的详细探讨&#xff1a; 系统概述 FSD是特斯拉的自动驾驶技术&…...

golang获取变量动态类型

类型断言&#xff1a;data.(Type) 类型断言是最常用的获取变量动态类型的方法之一。允许在运行时将接口值转换为其具体类型。 data 是一个接口类型的变量。 Type 是一个具体的类型。 这个表达式的含义是&#xff0c;如果 data 的底层值是 Type 类型&#xff0c;那么 value 将接…...

外企接受大龄程序员吗?

本人知乎账号同公众号&#xff1a;老胡聊Java&#xff0c;欢迎留言并咨询 亲身体会外企经历所见所闻&#xff0c;外企能接受大龄程序员。 1 大概是10年的时候&#xff0c;进一家知名外企&#xff0c;和我一起进的一位manager&#xff0c;后来听下来&#xff0c;年龄35&#xf…...

【DevOps】掌控云端:Google Cloud SDK 快速上手

一、Google Cloud SDK Google Cloud SDK (Software Development Kit) 是一组工具,包括 gcloud、gsutil 和 bq,用于通过命令行或自动化脚本访问和管理 Google Cloud 资源和服务。以下是 Cloud SDK 的详细介绍: 1、gcloud 命令行工具 gcloud 是 Cloud SDK 的核心组件,用于管理 …...

【Unity 踩坑系列】配置VScode环境Downloading the.NET Runtime Failed to download.NET 7.0.9installation timed out

1.问题描述 在最近使用Unity配置VScode开发环境时&#xff0c;总会出现以下的情况。(很多朋友其实本地已经自己安装好了.net环境 PS:可能各种版本.net 6.0 - .net 8.0都试过安装了 但就是会自动下载最新版本的.net ) Downloading the .NET Runtime. Downloading .NET versio…...

深入了解 NumPy:深度学习中的数学运算利器

文章目录 1. 导入NumPy2. 创建NumPy数组3. 数组的算术运算4. N维数组4.1 创建和操作多维数组4.2 高维数组 5. NumPy的广播功能5.1 基本广播示例5.2 更复杂的广播示例 6. 访问数组元素6.1 基于索引的访问6.2 遍历数组6.3 基于条件的访问6.4 高级索引6.5 性能考虑 在深度学习和数…...

鸿蒙开发接口Ability框架:【@ohos.ability.particleAbility (particleAbility模块)】

particleAbility模块 particleAbility模块提供了Service类型Ability的能力&#xff0c;包括启动、停止指定的particleAbility&#xff0c;获取dataAbilityHelper&#xff0c;连接、断开当前Ability与指定ServiceAbility等。 说明&#xff1a; 本模块首批接口从API version 7开…...

Flutter笔记:Widgets Easier组件库(8)使用图片

Flutter笔记 Widgets Easier组件库&#xff08;8&#xff09;&#xff1a;使用图片 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress o…...

商务分析方法与工具(五):Python的趣味快捷-文件和文件夹操作自动化

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…...

方法区内存回收机制与核心引用链深度剖析

在 Java 虚拟机&#xff08;JVM&#xff09;的内存管理体系中&#xff0c;方法区&#xff08;JDK 1.8 及以后具体实现为元空间 Metaspace&#xff09;的垃圾回收主要聚焦于两部分&#xff1a;废弃的常量池清理以及无用类的卸载&#xff08;Class Unloading&#xff09;。由于类…...

从‘人脑理解’到‘图解表达’:我是如何拆解小米便签项目结构的(附避坑指南)

从混沌到清晰&#xff1a;解码小米便签架构的思维可视化实战 第一次打开小米便签的源码时&#xff0c;我仿佛闯入了一个陌生的城市。高耸的Activity大厦、错综复杂的Manager街道、隐藏在角落的Helper小巷...作为刚入门的Android开发者&#xff0c;面对这样一个成熟项目的代码库…...

2026 年 30 个 MCP Server 实测评:Claude Code 集成效果与响应延迟对比数据

1. 30个MCP Server实测评背后的真实问题:Claude Code不是“插上就快”,而是“配错就崩” 我上线第三个内部MCP Server时,CI流水线里一个原本2秒完成的代码补全请求,突然卡在waiting for MCP response状态长达17秒。日志里没有报错,只有反复重试的HTTP 504。排查了两天,最…...

仅限内部团队使用的Perplexity行业扫描协议(附可复用Prompt模板库+信源可信度评分表v2.3)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity行业扫描协议的定位与适用边界 Perplexity行业扫描协议&#xff08;Perplexity Industry Scanning Protocol&#xff0c;简称PISP&#xff09;并非通用型AI评估框架&#xff0c;而是一套面向垂直领…...

One API 部署教程(上):本地部署完整指南

前言 One API 是一个开源的 AI API 聚合管理平台,可以让你用一个统一的接口调用多个 AI 平台的 API(如 OpenAI、DeepSeek、通义千问等)。 为了让大家能全面了解 One API,我决定写一个系列教程: One API 部署教程(上):本地部署完整指南(本文) One API 部署教程(中)…...

测试岗真的是“青春饭”吗?40岁资深测试专家的职业复盘

在IT行业的诸多岗位中&#xff0c;软件测试岗常常被贴上“青春饭”的标签。不少从业者&#xff0c;尤其是刚入行的年轻人&#xff0c;总会在某个深夜陷入焦虑&#xff1a;“我到了35岁、40岁&#xff0c;还能在这个岗位上立足吗&#xff1f;”作为一名在测试领域深耕20年&#…...

如何在Windows电脑上直接运行安卓应用:APK安装器终极解决方案

如何在Windows电脑上直接运行安卓应用&#xff1a;APK安装器终极解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经希望在Windows电脑上直接运行安卓应…...

别再轮询了!在Qt里用HIDAPI实现USB设备通信,试试这个异步读取方案

告别轮询&#xff1a;在Qt中实现高效USB-HID异步通信的现代方案 当开发者需要在Qt应用中与USB-HID设备通信时&#xff0c;传统的轮询方式往往会导致UI卡顿、CPU资源浪费等问题。本文将介绍几种更优雅的异步通信方案&#xff0c;充分利用Qt的事件循环机制&#xff0c;实现高效、…...

编程统计员工午休时长,下午工作效率数据,划定合理休息时间,科学提升全天职场整体工作产能。

基于商务智能&#xff08;BI&#xff09;思想的「员工午休时长 vs 下午工作效率」分析系统&#xff0c;保持中立、去营销化、无引流。一、实际应用场景描述某中型互联网团队发现&#xff1a;- 有人午休时间过长&#xff0c;下午精神仍不佳- 有人午休过短&#xff0c;下午效率明…...

不止图表引用!VSCode+LaTeX完整编译链配置指南(含BibTeX文献处理)

VSCodeLaTeX高效工作流&#xff1a;从交叉引用到文献管理的全栈配置指南 当你第一次在VSCode中尝试用LaTeX撰写学术论文时&#xff0c;是否曾被那些顽固的"??"标记困扰&#xff1f;这些问号背后隐藏着LaTeX编译机制的核心逻辑——交叉引用需要多轮编译才能正确解析…...