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

Redis 主从复制集群搭建教程

目录

    • 为什么要搭建 Redis 主从复制集群?
    • 搭建 Redis 主从复制集群
      • 前提条件
      • 步骤一:创建 Docker 网络
      • 步骤二:启动 Redis 主节点
      • 步骤三:启动 Redis 从节点
      • 步骤四:验证复制状态
      • 步骤五:使用 Python 连接 Redis 集群

为什么要搭建 Redis 主从复制集群?

在生产环境中,单节点 Redis 存在以下几个问题:

  1. 单点故障风险:如果唯一的 Redis 节点发生故障,整个系统将无法访问缓存数据。
  2. 性能瓶颈:所有读写请求都集中在单个节点上,容易成为系统瓶颈。
  3. 数据安全性低:数据只存在于一个节点,如果该节点数据丢失,将无法恢复。
  4. 维护困难:单节点维护(如升级)时,会导致服务不可用。

主从复制集群通过引入多个节点解决了这些问题:

  • 读写分离:主节点处理写操作,从节点处理读操作,提高系统吞吐量
  • 高可用性:主节点故障时,可以提升从节点为新的主节点
  • 数据备份:数据在多个节点上存在副本,提高数据安全性
  • 负载均衡:读请求可以分散到多个从节点,减轻主节点压力

搭建 Redis 主从复制集群

前提条件

  • 已安装 Docker
  • 基本了解 Redis 和 Docker 命令

步骤一:创建 Docker 网络

首先,创建一个专用网络,使 Redis 容器之间可以通过容器名称相互通信:

docker network create redis-cluster

步骤二:启动 Redis 主节点

启动一个 Redis 容器作为主节点,并将其端口映射到主机:

docker run -d -p 6379:6379 --name redis-master --network redis-cluster redis

步骤三:启动 Redis 从节点

启动两个 Redis 从节点,并配置它们跟随主节点:

docker run -d -p 6380:6379 --name redis-slave1 --network redis-cluster redis redis-server --slaveof redis-master 6379
docker run -d -p 6381:6379 --name redis-slave2 --network redis-cluster redis redis-server --slaveof redis-master 6379

在这里插入图片描述

步骤四:验证复制状态

连接到主节点,检查复制状态:

docker exec -it redis-master redis-cli

在 Redis CLI 中执行:

INFO replication

您应该看到类似以下输出:

# Replication
role:master
connected_slaves:2
slave0:ip=172.xx.xx.xx,port=6379,state=online,offset=xxx,lag=0
slave1:ip=172.xx.xx.xx,port=6379,state=online,offset=xxx,lag=0

在这里插入图片描述

步骤五:使用 Python 连接 Redis 集群

创建一个 Python 脚本来连接和使用 Redis 集群:

import redis# 连接到主节点(写操作)
master = redis.StrictRedis(host='localhost', port=6379, db=0)# 连接到从节点(读操作)
slave = redis.StrictRedis(host='localhost', port=6380, db=0)def write_to_master(key, value):# 写操作发送到主节点master.set(key, value)def read_from_slave(key):# 读操作发送到从节点value = slave.get(key)if value:return value.decode('utf-8')  # 将字节字符串解码为普通字符串return None# 示例使用
write_to_master('foo', 'bar')
value = read_from_slave('foo')
print(value)  

在这里插入图片描述

http://www.xdnf.cn/news/5006.html

相关文章:

  • 基于vue框架的电子商城m8qu8(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 构筑芯片行业的“安全硅甲”
  • SSL证书格式详解:PEM、CER、DER、JKS、PKCS12等
  • k8s之探针
  • 数据结构【二叉搜索树(BST)】
  • opencv中的图像特征提取
  • 解构C++高级命名空间:构建空间作用域·控制兼容
  • 【MySQL】第二弹——MySQL表的增删改查(CRUD)
  • 多态(c++详细版)
  • 大模型(LLMs)agent
  • 图像匹配导航定位技术 第 8 章
  • 编专利或委托他人编专利属于学术不端行为吗?
  • C++ 函数类型及实用例题
  • 前端如何处理精度丢失问题
  • 影响服务器性能的主要因素是什么
  • 量子通信技术及其在信息安全中的应用:开启无条件安全通信的新时代
  • 【Python】pyinstaller 反编译 exe
  • 手撕基于AMQP协议的简易消息队列-4(项目需求分析)
  • 现代健康养生新范式:多维度守护身心活力
  • TypeScript 中,属性修饰符
  • pytest自动化测试框架搭建,并生成allure测试报告
  • 【C语言干货】一维数组传参本质
  • 如何用LOTO示波器测量变压器带宽?
  • 一篇文章讲清楚mysql的聚簇索引、非聚簇索引、辅助索引
  • BGA底部填充胶固化异常延迟或不固化原因分析及解决方案
  • 垃圾回收的三色标记算法
  • <el-cascader中多选多层级点击节点也选中
  • Harmonyos-属性修改器和更新器
  • 低代码云MES、轻量级部署、让智造更简单
  • 探索大语言模型(LLM):词袋法(Bag of Words)原理与实现