Redis 组网方式入门

文章目录

  • 一、组网方式
    • 1. 单实例模式
      • 描述
      • 优点
      • 缺点
      • 适用场景
    • 2. 主从复制模式(Master-Slave Replication)
      • 描述
      • 优点
      • 缺点
      • 适用场景
      • 基于docker的redis主从复制
        • 1. 配置主节点
        • 2. 配置从节点
        • 3. 查看节点状态
        • 4. 验证主从数据同步
        • 5. 查看同步进度
    • 3. 哨兵模式(Sentinel)
      • 描述
      • 优点
      • 缺点
      • 适用场景
    • 4. 集群模式(Cluster)
      • 描述
      • 优点
      • 缺点
      • 适用场景
    • 5. 分片模式
      • 5.1 代理分片模式(Proxy-based Sharding)
        • 描述
        • 优点
        • 缺点
      • 5.2 客户端分片模式(Client-side Sharding)
        • 描述
        • 优点
        • 缺点
  • 二、总结

Redis 是一个开源的、基于键值对的内存数据存储系统,广泛应用于缓存、消息队列、数据库等多种场景。随着业务需求的不断增长,单一的 Redis 实例往往无法满足高可用性和高性能的要求。因此,Redis 提供了多种组网方式来应对不同的应用场景。本文将详细介绍 Redis 的几种主要组网方式及其优缺点。
在这里插入图片描述

一、组网方式

1. 单实例模式

描述

这是最基本的部署方式,Redis 服务运行在一个单独的服务器上,没有冗余机制。

优点

简单易用:配置和管理都非常简单,适合小型应用或测试环境。
资源利用率高:不需要额外的服务器资源,成本较低。

缺点

单点故障:一旦该实例发生故障,整个服务将不可用,存在较高的风险。
性能瓶颈:所有请求都集中在同一个实例上,容易成为性能瓶颈。

适用场景

小型应用或测试环境
对高可用性和性能要求不高的场景

2. 主从复制模式(Master-Slave Replication)

描述

一个主节点(Master)可以有多个从节点(Slave),主节点负责写操作,从节点负责读操作。数据从主节点异步复制到从节点。

优点

提高读取性能:通过读写分离,从节点可以分担主节点的读取压力。
数据冗余:支持数据备份,提高了数据的安全性。
灵活扩展:可以轻松添加更多的从节点来提升读取性能。

缺点

单点故障:主节点故障时需要手动切换,存在单点故障风险。
数据一致性:由于数据复制是异步的,可能会导致主从节点之间的数据不一致。

适用场景

读多写少的应用场景
需要数据备份和读写分离的场景

基于docker的redis主从复制

1. 配置主节点
  • 编辑主节点配置文件
# 绑定 IP 地址,允许远程连接
bind 0.0.0.0# 配置端口号
port 6379# 设置密码(可选)
requirepass 123456# 开启 AOF 持久化(可选)
appendonly yes# 设置日志级别
loglevel notice# 设置日志文件路径
logfile /var/log/redis/redis.log
  • 启动主节点
docker run -d -P \
--name redis7-master \
-p 6379:6379 \
-p 16379:16379 \
-v /work/docker/redis/data/master_6379:/data \
-v /work/docker/redis/data/master_6379/log:/var/log/redis \
-v /work/docker/redis/conf/master_6379.conf:/etc/redis/redis.conf \
redis:latest \
redis-server /etc/redis/redis.conf
  • 查看主节点IP
$ docker inspect redis7-master | grep IPAdd"SecondaryIPAddresses": null,"IPAddress": "172.17.0.2","IPAddress": "172.17.0.2",

如果是生产环境,一般不使用docker,直接部署到物理机,IP地址也是已知确定的;本人使用docker部署,此处查看主节点IP,方便后续部署从节点时使用该IP。

2. 配置从节点
  • 编辑主节点配置文件
# 绑定 IP 地址,允许远程连接
bind 0.0.0.0# 配置端口号
port 6380# 设置密码(如果主节点设置了密码)
masterauth 123456# 设置密码(可选)
requirepass 12345678# 开启 AOF 持久化(可选)
appendonly yes# 设置日志级别
loglevel notice# 设置日志文件路径
logfile /var/log/redis/redis.log# 指定主节点的地址和端口
replicaof 172.17.0.2 6379

replicaof 命令使用的IP即是主节点的IP。

  • 启动从节点
docker run -d -P \
--name redis7-slave \
-p 6380:6380 \
-p 16380:16380 \
-v /work/docker/redis/data/slave_6380:/data \
-v /work/docker/redis/data/slave_6380/log:/var/log/redis \
-v /work/docker/redis/conf/slave_6380.conf:/etc/redis/redis.conf \
redis:latest \
redis-server /etc/redis/redis.conf
3. 查看节点状态
  • 检查主节点状态
docker exec -it redis7-master bash
redis-cli -a 123456
info replication
# Replication
role:master
connected_slaves:1
slave0:ip=172.17.0.4,port=6380,state=online,offset=43,lag=0
……

应该能看到 role:masterconnected_slaves:1,表示有一个从节点连接成功。

  • 检查从节点状态
docker exec -it redis7-slave bash
redis-cli -p 6380 -a 12345678
> info replication
# Replication
role:slave
master_host:172.17.0.2
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
……

应该能看到 role:slavemaster_host:<master_ip>master_link_status:up,表示从节点已成功连接到主节点。

在从节点执行slaveof <master_ip> <master_port>slaveof no one也可以快速搭建和解散主从网络。

4. 验证主从数据同步
  • 在主节点上写入数据
set k1 hello
  • 在从节点上读取数据
get k1

如果返回 hello,说明数据同步成功。

5. 查看同步进度
  • 在主节点执行info replication命令
# slave0后面显示从节点的IP、端口、状态、偏移量和延迟
slave0:ip=172.17.0.4,port=6380,state=online,offset=3179,lag=1
master_repl_offset:3179 # 表示主节点的复制偏移量
  • 在从节点执行info replication命令
slave_repl_offset:3501 # 表示从节点的复制偏移量
master_repl_offset:3501 # 表示主节点的复制偏移量
  • 在主节点或任意从节点执行MONITOR命令
    该命令将显示所有接收到的命令,包括主从同步相关的命令。

  • 在主节点执行CLIENT LIST命令
    在这里插入图片描述
    flags=S:表示这是一个从节点连接。

3. 哨兵模式(Sentinel)

描述

哨兵模式在主从复制模式的基础上增加了哨兵节点,哨兵节点负责监控主从节点的健康状态,并在主节点故障时自动进行故障转移。

优点

自动化故障恢复:哨兵节点可以自动检测并恢复主节点故障,提高了系统的可用性。
高可用性:通过自动故障转移,减少了服务中断时间。

缺点

配置复杂:需要配置多个哨兵节点和主从节点,管理较为复杂。
资源消耗:哨兵节点会占用一定的系统资源。

适用场景

高可用性要求较高的生产环境
需要自动故障恢复的场景

4. 集群模式(Cluster)

描述

Redis 集群模式支持数据分片(Sharding),每个节点负责一部分数据,通过哈希槽(Hash Slot)机制实现数据的分布式存储。

优点

水平扩展:支持水平扩展,提高了系统的存储容量和处理能力。
高可用性:通过数据分片和副本机制,提高了系统的可用性。
负载均衡:请求均匀分布在多个节点上,避免了单点性能瓶颈。

缺点

配置复杂:需要配置多个节点和哈希槽,管理较为复杂。
客户端要求:客户端需要支持集群模式,增加了客户端的复杂度。

适用场景

大规模分布式系统
需要高可用性和高性能的场景

5. 分片模式

5.1 代理分片模式(Proxy-based Sharding)

描述

通过代理层实现数据分片,客户端请求先经过代理层,由代理层决定将请求路由到哪个Redis实例。

优点

客户端无需关心数据分片逻辑,易于实现读写分离。

缺点

代理层可能成为性能瓶颈,增加了系统复杂度。

5.2 客户端分片模式(Client-side Sharding)

描述

客户端直接负责数据分片逻辑,将请求直接发送到相应的Redis实例。

优点

减少了代理层的开销,提高了性能。

缺点

客户端实现复杂,数据分片逻辑需要在客户端维护,增加了客户端的负担。

二、总结

Redis 提供了多种组网方式,每种方式都有其适用的场景和优缺点。选择合适的组网方式需要根据具体的业务需求、性能要求和运维能力来决定。例如,对于简单的应用,单实例模式或主从复制模式可能就足够了;而对于高可用性和高性能要求的场景,集群模式或哨兵模式可能是更好的选择。
希望本文能够帮助到你。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【系统集成项目管理工程师教程】第5章 软件工程

软件工程是一门研究用工程化方法构建和维护有效、实用和高质量软件的学科&#xff0c;涵盖软件需求、设计、实现、测试、部署交付、质量管理和过程能力成熟度等方面&#xff0c;旨在提高软件生产率、质量并降低成本&#xff0c;确保软件项目的成功开发与维护。 5.1软件工程定义…

PowerDesigner使用教程:设置注释、默认值属性

使用场景: 进行表设计时&#xff0c;我们需要对字段增加注释、设置默认值 解决方案&#xff1a; 如下图设置即可实现

如果 MySQL 主库出现了问题,从库该何去何从呢?

🚀 博主介绍:大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师! 🚀 🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷于探索一些框架源码和算法技巧奥秘,还乐于分享这些宝贵的知识和经验。 💡 无论你是刚刚踏…

C# 日志框架 NLog、log4net 和 Serilog对比

文章目录 前言NLog、log4net 和 Serilog 三个框架的详细对比:一、NLog优点:缺点:二、 log4net优点缺点三、Serilog优点缺点四、Serilog使用举例总结前言 NLog、log4net 和 Serilog 三个框架的详细对比: NLog、log4net 和 Serilog 是三个非常流行的 .NET 日志框架,它们各自…

本地缓存库分析(四):fastcache

文章目录 本系列前言设计索引和数组怎么判断是否被覆盖其他问题 源码走读数据结构setget 总结 本系列 本地缓存库分析&#xff08;一&#xff09;&#xff1a;golang-lru本地缓存库分析&#xff08;二&#xff09;&#xff1a;bigcache本地缓存库分析&#xff08;三&#xff0…

安科瑞5G基站直流叠光监控系统-安科瑞黄安南

基站现状和趋势 5G基站是专门提供5G网络服务的公用移动通信基站。5G基站主要用于提供5G空口协议功能&#xff0c;支持与用户设备、核心网之间的通信。按照逻辑功能划分&#xff0c;5G基站可分为5G基带单元与5G射频单元&#xff0c;二者之间可通过CPRI或eCPRI接口连接。 2019年…

Pr 视频效果:过渡

效果面板/视频效果/过渡 Video Effects/Transition Adobe Premiere Pro 的视频效果中&#xff0c;过渡 Transition效果组用于创建单个剪辑内过渡效果的一组视频效果。这些效果可以增强视频的视觉连贯性&#xff0c;添加创意性的视觉转换&#xff0c;为观众提供流畅的观看体验。…

DataX 的安装配置和使用 (详细版)

1&#xff0c;上传解压 1&#xff0c;开始上传安装包到你虚拟机上放置安装包的文件夹 2&#xff0c;开始解压 ,配置环境变量 1、上传 /opt/modules 2、解压 tar -zxvf datax.tar.gz -C /opt/installs 3、修改 vi /etc/profile 配置环境变量&#xff1a; export DAT…

zookeeper安装

安装之前&#xff1a;先关闭三台服务器的防火墙&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; systemctl stop firewalld systemctl disable firewalld 1)上传 /opt/modules下面 2&#xff09;解压 /opt/installs下面 tar -zxvf zookeeper-3.4.10.tar.gz …

Nature文章《deep learning》文章翻译

这篇文章是对Nature上《deep learning》文章的翻译。原作者 Yann LeCun, Yoshua Bengio& Geoffrey Hinton。 这篇文章的中心思想是深入探讨深度学习在机器学习中的革命性贡献&#xff0c;重点介绍其在特征学习、监督学习、无监督学习等方面的突破&#xff0c;并阐述其在图…

动态规划—整数拆分

class Solution {public int integerBreak(int n) {int[] dp new int[n1];dp[2] 1;for(int i 3; i< n; i){for(int j 1; j< i/2; j){//j拆i&#xff0c;只需要遍历到 i/2 就可以&#xff0c;后面没有必要遍历dp[i] Math.max(dp[i], Math.max(j*(i-j) , j*dp[i-j]));…

OceanBase V4.3.3,首个面向实时分析场景的GA版本发布

在10月23日举办的 OceanBase年度发布会 上&#xff0c;我们怀着激动之情&#xff0c;正式向大家宣布了 OceanBase 4.3.3 GA 版的正式发布&#xff0c;这也是OceanBase 为实时分析&#xff08;AP&#xff09;场景打造的首个GA版本。 2024 年初&#xff0c;我们推出了 4.3.0 版本…

儿童安全座椅行业全面深入分析

儿童安全座椅就是一种专为不同体重&#xff08;或年龄段&#xff09;的儿童设计&#xff0c;将孩子束缚在安全座椅内&#xff0c;能有效提高儿童乘车安全的座椅。欧洲强制性执行标准ECE R44/03的定义是&#xff1a;能够固定到机动车辆上&#xff0c;带有ISOFIX接口、LATCH接口的…

算法笔记:Day-09(初始动态规划)

509. 斐波那契数 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 …

HTTP和HTTPS 的作用和应用场景 (python 爬虫简单入门)

HTTP和HTTPS HTTP HTTP协议&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;&#xff1a;是一种发布和接收 HTML页面的方法。 HTTP的端口号为80 HTTPS HTTPS&#xff08;Hypertext Transfer Protocol over Secure Socket Layer&#xff09;…

Java多线程编程(三)一>详解synchronized, 死锁,wait和notify

目录&#xff1a; 一.synchronized 的使用&#xff1a; 二. 常见死锁情况&#xff1a; 三 .如何避免死锁&#xff1a; 四.wait和notify 一.synchronized 的使用&#xff1a; 我们知道synchronized锁具有互斥的特点&#xff1a; synchronized 会起到互斥效果, 某个线程…

linux入门——“初识make”

make是linux中的自动化构建工具&#xff0c;一般来说系统会自带make&#xff0c;如果没有&#xff0c;那么可以使用命令“sudo apt install -y make”来安装。 1.初识make make使用的前提是维护makefile/Makefile文件&#xff0c;需要在自己的目录下自己创建。 我在此目录下创…

【K8S系列】Kubernetes 中 Pod 无法通过 Service 名称访问服务的 DNS 解析失败问题【已解决】

在 Kubernetes 中&#xff0c;Service 提供了一种稳定的方式&#xff0c;通过名称访问一组 Pod。当其他 Pod 无法通过 Service 名称访问服务&#xff0c;并且出现 DNS 解析失败时&#xff0c;通常会导致应用无法正常工作。本文将详细分析此问题的常见原因及其解决方案。 一、问…

关于分布式事务,你知道多少?如何落地?

很多人估计会说&#xff0c;我在项目中完全没有涉及到过分布式事务&#xff0c;而面试官老喜欢问&#xff0c;真TM烦&#xff01; 本文就来聊聊分布式事务&#xff0c;有哪些方案和实现。文章有点长&#xff0c;可以先收藏&#xff0c;有时间了慢慢看。 什么是事务&#xff1f;…

SIwave:释放 Resonant Mode Solver 的强大功能

SIwave 是一种电源完整性和信号完整性工具。本文的重点是 Resonant 模式求解器。 进行谐振计算的主要原因是确定 Powerplane 中 Cap 去耦的最佳位置。Powerplane 的大小由最大预期电流和允许的最大电压降决定。然而&#xff0c;即使是最好的设计也没有足够的电容来将宽带频谱的…