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

redis 架构详解

Redis架构详解可以从以下几个方面进行阐述:

一、部署架构

Redis有多种部署架构,适用于不同的应用场景和需求,主要包括以下几种:

  1. 单机模式(Standalone Mode)

    • 特点:部署简单,配置方便,性能较好,适合小规模应用。
    • 优点:易于实现和维护。
    • 缺点:存在单点故障问题,一旦Redis服务宕机,数据将不可访问;容量受限于单台机器的内存。
  2. 主从复制(Master-Slave Replication)

    • 特点:主节点负责写入操作,从节点负责读取操作,数据从主节点自动同步到从节点。
    • 优点:提升读性能,多个从节点分担读请求;数据冗余,提高数据安全性。
    • 缺点:依然存在单点故障,主节点宕机后需要手动或自动进行主从切换;从节点的数据复制有延迟,可能会存在短时间内的数据不一致。
  3. 哨兵模式(Sentinel Mode)

    • 特点:Redis Sentinel是一种高可用性架构,用于自动监控主从复制中的节点状态,发生故障时自动将从节点提升为主节点,保证服务的可用性。
    • 优点:自动化的主从切换,提升高可用性;减少人工干预,自动监控和恢复。
    • 缺点:哨兵本身可能成为单点故障,建议部署多个哨兵节点形成集群;哨兵模式主要保证高可用性,但不能提升写入性能。
  4. 集群模式(Cluster Mode)

    • 特点:Redis Cluster是Redis的分布式部署方案,适用于大规模数据存储和高并发访问。它将数据分片存储在不同的节点上,并支持无中心的节点拓扑结构。
    • 优点:具有水平扩展能力,支持大规模数据和高并发;提供高可用性和故障恢复机制;读写分离,性能更高。
    • 缺点:集群部署相对复杂,节点之间的网络通信较为频繁。

二、高性能架构设计

Redis之所以具有高性能,主要得益于其独特的架构设计,包括以下几个方面:

  1. 内存存储

    • Redis将数据存储在内存中,而不是在磁盘上。内存的读写带宽远高于磁盘,支持更高的并发读写操作,从而提高了Redis的响应速度。
  2. 高效的数据结构和操作

    • Redis使用简单的键值对存储模型,并提供了多种高效的数据结构,如字符串、列表、哈希表、集合和有序集合等。这些数据结构在内存中进行优化,能够快速进行数据操作,减少了数据处理的复杂性和计算开销。
  3. IO多路复用技术

    • Redis使用了非阻塞I/O和事件驱动模型,充分利用了操作系统的I/O多路复用机制(如epoll)。这种机制使单个线程可以监视多个文件描述符(如网络套接字),避免了为每个连接创建一个线程或进程的开销,从而提升了性能。
  4. 异步操作

    • Redis支持异步操作,可以在后台执行一些耗时的操作,如持久化到磁盘或复制数据到其他节点。通过异步操作,Redis可以更快地响应客户端请求,而不必等待这些操作的完成。
  5. 优化的网络通信协议

    • Redis使用自己优化的RESP(REdis Serialization Protocol)网络通信协议。该协议简单且高效,能够减少网络通信的开销,提升数据传输效率。

三、Redis 基本架构组件

  • Redis Server(服务器)

    • 这是 Redis 的核心部分,负责接收客户端的请求、处理数据操作并返回结果。它包含多个重要的模块。例如,在内存存储方面,它有一个高效的数据结构存储系统,用于存储键值对。这些数据结构包括字符串(String)、列表(List)、哈希(Hash)、集合(Set)和有序集合(Sorted Set)等。以字符串为例,它可以存储简单的文本信息,如用户的登录令牌;列表可用于实现消息队列,像记录用户操作日志的顺序队列;哈希适合存储对象相关的数据,如用户信息对象,其中用户名、年龄等可以作为哈希的字段存储在一个键对应的哈希结构中。
    • 服务器还包含网络通信模块,用于处理与客户端的连接。它通过 TCP 协议监听指定端口(默认是 6379),接收来自客户端的请求,如 SET、GET 等操作命令,并将处理后的结果返回给客户端。
  • Redis Client(客户端)

    • 客户端是用于与 Redis 服务器进行交互的工具。有多种类型的客户端,包括官方提供的 Redis - CLI(命令行客户端),它是一个简单的命令行工具,用户可以通过输入 Redis 命令来直接操作服务器。例如,在命令行中输入SET key value就可以在服务器中存储一个键值对,GET key则可以获取对应键的值。

    • 除了命令行客户端,还有各种编程语言对应的客户端库,如 Python 的

      redis - py
      

      、Java 的

      Jedis
      

      等。这些客户端库使得在不同的编程语言环境中能够方便地与 Redis 服务器进行通信。以

      redis - py
      

      为例,在 Python 应用程序中,可以通过以下方式使用:

      • import redis
      • r = redis.Redis(host='localhost', port=6379)
      • r.set('key', 'value')
      • print(r.get('key'))
  • 数据持久化模块

    • RDB(Redis Database)持久化:RDB 是一种快照式的持久化方式。Redis 会在满足一定条件时(如经过指定的时间间隔或者达到一定的写操作次数),将内存中的数据以二进制格式保存到磁盘上的一个文件(RDB 文件)中。例如,在备份场景下,RDB 文件可以方便地用于数据恢复。当 Redis 服务器重新启动时,它可以通过加载这个 RDB 文件快速地恢复数据状态。这种方式的优点是数据恢复速度快,文件体积相对较小,适合用于大规模数据的备份;缺点是可能会丢失两次快照之间的数据。
    • AOF(Append Only File)持久化:AOF 持久化方式是通过记录服务器执行的写命令来实现持久化的。所有的写命令(如 SET、LPUSH 等)会以追加的方式写入一个 AOF 文件。在服务器重启时,Redis 会重新执行 AOF 文件中的命令来恢复数据。AOF 的优点是数据丢失风险较低,能够更好地保证数据的完整性;缺点是文件体积可能会因为不断追加命令而变得很大,并且数据恢复速度相对较慢,因为需要重新执行大量的命令。

相关文章:

redis 架构详解

Redis架构详解可以从以下几个方面进行阐述: 一、部署架构 Redis有多种部署架构,适用于不同的应用场景和需求,主要包括以下几种: 单机模式(Standalone Mode) 特点:部署简单,配置方便…...

多分类交叉熵与稀疏分类交叉熵

总结: 标签为 One-hot 编码的多分类问题,用分类交叉熵对于标签为整数的多分类问题,用稀疏分类交叉熵稀疏分类交叉熵内部会将整数标签转换为 One-hot 编码,而如果标签已经是 One-hot 编码的形式,再使用稀疏分类交叉熵就会多此一举。 算例 假设我们有三个类别:A、B 和 C。…...

PHP 8新特性深度解析与实战应用

引言 PHP作为一种广泛使用的开源脚本语言,以其在Web开发领域的卓越性能而闻名。随着PHP 8的发布,这门语言再次迎来了许多令人兴奋的新特性和改进。本文将深入探讨PHP 8的新特性,并提供实战应用示例,帮助开发者更好地理解和使用PH…...

【C语言】UDP通信

udp使用的是数据报传输。可以一对一&#xff0c;一对多进行传输&#xff0c;用于快速&#xff0c;实时性高的场景 服务器端&#xff1a; 使用步骤&#xff1a; 1.创建socket 2.bind绑定可接收的客户端 3.while{ recv接收数据 send发送数据 } #include <stdio.h> #inclu…...

用Keytool和OpenSSL生成和签发数字证书

一)keytool生成私钥文件(.key)和签名请求文件(.csr),openssl签发数字证书 J2SDK在目录%JAVA_HOME%/bin提供了密钥库管理工具Keytool,用于管理密钥、证书和证书链。Keytool工具的命令在JavaSE6中已经改变,不过以前的命令仍然支持。Keytool也可以用来管理对称加密算法中…...

算法-动态数组-62.不同路径

一、题目 二、思路解析 1.思路&#xff1a; 对于找到目的地它的来源主要来源于目的地的上一格和目的地的左一格 2.常用方法&#xff1a; 无 3.核心逻辑&#xff1a; 1.处理边界&#xff1a; a.只向右移动&#xff0c;至始至终只有一条路径 for(int i0;i<m;i){dp[i][0]1; } …...

Y3编辑器教程5:触发器进阶使用(镜头、UI、表格、函数库、排行榜、游戏不同步)

文章目录 一、游戏声音设计二、 游戏镜头设计2.1 镜头的基本参数2.2 镜头时间轴动画 三、界面编辑3.1 界面编辑器设置3.2 添加按钮事件3.3 触发编写 四、 表格编辑器&#xff08;实现对话UI&#xff09;4.1 一维表和多维表4.2 数据验证、搜索、保存与撤销4.3 Excel导入导出4.4 …...

基于小程序实现地图定位、轨迹绘制、地图标点、快捷导航、唤醒导航APP、开箱即用

目录 前言研究背景与意义研究目标与内容研究方法与技术路线小程序地图组件介绍定位技术与原理轨迹绘制技术地图标注与标记功能地图定位与轨迹绘制功能实现定位功能设计与实现获取用户当前位置总结说明代码块前言 研究背景与意义 地图定位和轨迹追踪作为智能手机中常见的功能之…...

JAVA后端实现全国区县下拉选择--树形结构

设计图如图&#xff1a; 直接上代码 数据库中的格式&#xff1a; JAVA实体类&#xff1a; Data public class SysAreaZoningDO {private Long districtId;private Long parentId;private String districtName;private List<SysAreaZoningDO> children; } MapperSQL语句…...

数据结构速成

1. 数据结构与算法 2. 顺序表 3. 链表 4. 栈与队列 5. 串 6. 树与二叉树&#xff08;1&#xff09; 7. 树与二叉树&#xff08;2&#xff09; 8. 图 9. 图的应用 10. 查找 11. 排序&#xff08;1&#xff09; 12. 排序&#xff08;2&#xff09;...

Electron-Vite 项目搭建(Vue)

前提条件 Node.js: 确保已安装 Node.js 版本 18 或更高版本 (推荐使用最新稳定版)。Vite: 确保 Vite 版本为 4.0 或以上。包管理工具: 推荐使用 pnpm&#xff0c;但也可以使用 npm 或 yarn。 安装 Electron-Vite 首先&#xff0c;在项目中安装 electron-vite 作为开发依赖&a…...

如何寻找和改进开源项目来作为个人简历项目

寻找开源项目&#xff1a; 使用开源代码平台&#xff08;如GitHub&#xff09;来搜索优质的开源项目。例如&#xff0c;可以通过搜索关键词如“spring boot”&#xff0c; in name spring boot或者使用更具体的条件&#xff0c;如“star大于1000”来筛选热门项目。 star:>…...

STEM真题 第五题 比 n 小的最大数

题目描述 给定一个正整数 n&#xff0c;请将 n 中的每位数字重新排列并组成一个新数&#xff0c;要求新数的值要小于 n&#xff0c;请找出所有 符合要求的新数中最大的那个正整数&#xff0c;如果不存在这样的正整数&#xff0c;则输出 -1。例 1&#xff1a;n 312&#xff0…...

HuggingGPT Solving AI Tasks with ChatGPT and its Friends in Hugging Face 论文解读

1. 引言 近年来&#xff0c;大型语言模型&#xff08;LLMs&#xff09;如ChatGPT在自然语言处理领域取得了惊人的进展&#xff0c;展现出强大的语言理解、生成和推理能力。然而&#xff0c;当前的LLMs仍然存在一些局限性&#xff0c;例如无法处理复杂信息&#xff08;如视觉和…...

深入了解HTTPDNS-使用Python实现一个HTTPDNS服务

深入了解HTTPDNS-使用Python实现一个HTTPDNS服务 HTTPDNS的起源 传统的DNS&#xff08;Domain Name System&#xff09;是互联网的核心协议之一&#xff0c;负责将人类可读的域名解析为机器可理解的IP地址。经典的DNS查询基于UDP协议&#xff0c;在特定网络环境下可能存在如下…...

IDEA 可视化使用 git rebase 合并分支步骤 使git分支树保持整洁

模拟环境 dev 分支开发完一个功能&#xff0c;需要合并到 master 分支&#xff0c;如果现在直接 merge 合并的话 git分支树会出现杂乱分叉&#xff0c;先把 master 分支 rebase 到 dev git分支树就会是整洁的一条直线 git rebase介绍 rebase:翻译成中文是重新设定&#xff0c;…...

网络安全教学博客(二):常见网络安全威胁剖析

在上一篇博客中&#xff0c;我们了解了网络安全的基础概念和重要性。今天&#xff0c;让我们深入探讨一下常见的网络安全威胁&#xff0c;以便我们能够更好地识别和防范它们。 恶意软件&#xff08;Malware&#xff09; 病毒&#xff08;Virus&#xff09;&#xff1a;病毒是一…...

区块链技术及应用(期末考试版)

简述区块链中的默克尔树结构及其作用。 默克尔树&#xff08;Merkle Tree&#xff09;是一种二叉树数据结构&#xff0c;其叶节点是数据块的哈希值&#xff0c;而每个非叶节点是其子节点哈希值的哈希。它的主要作用是高效且安全地验证大规模数据结构中的数据内容。 解释为什么…...

Ubuntu22.04 docker如何发布镜像(和用git差不多)

在dockerhub上创建远程仓库&#xff1a;https://hub.docker.com/ 将本地镜像打tag&#xff0c;并修改成可以上传到 dockerhub 的形式 # 查看本地镜像# 修改镜像 ## docker tag 镜像名称:标签 新的镜像名称&#xff08;要和远程仓库dockerhub上的一致&#xff09;:新的标签pus…...

基于python绘制数据表(上)

利用python绘制各种数据图表 绘制柱形图-源码 from openpyxl import Workbook from openpyxl.chart import BarChart, Reference# 创建工作薄 wb Workbook(write_onlyTrue) # 创建工作表 ws wb.create_sheet(月收入)# 准备数据 rows [(月份, 销售额),(1, 23),(2, 43),(3, …...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...