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 的优点是数据丢失风险较低,能够更好地保证数据的完整性;缺点是文件体积可能会因为不断追加命令而变得很大,并且数据恢复速度相对较慢,因为需要重新执行大量的命令。

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

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

相关文章

[python]使用 Pandas 分组和汇总表数据

在数据分析中,数据的分组与汇总是非常常见的操作。下面使用 Python 的 Pandas 库来处理表数据,并生成汇总结果。 导入数据 首先,我们需要导入必要的库并读取 Excel 文件中的数据: import pandas as pd# 读取工资表数据 df pd.…

多线程的知识总结(8):用 thread 类 或全局 async (...) 函数,创建新线程时,谁才是在新线程里第一个被执行的函数

(40)用 thread 类 或全局 async (…) 函数,创建新线程时,谁才是在新线程里第一个被执行的函数? 弄清楚这个问题,有利于推测和理解线程中代码的执行流程。根据 thread 类 和 async (…&#xff0…

PostgreSql集群安装 Pgpool-II以及服务器设置和操作

2 .安装 Pgpool-II 2.1. 规划 由于 Pgpool-II 是一个管理 PostgreSQL 的工具,我们需要决定如何 首先部署它们。此外,还可以有多个 Pgpool-II 安装数量达到 增强 Pgpool-II 本身的可用性。我们需要提前计划需要多少次 Pgpool-II 安装。在 本章我们首先讨…

UOB大华银行|校招网申综合能力SHL测评题库英语版本真题分析

大华银行有限公司(大华银行)是亚洲银行业的翘楚,大华银行总部位于新加坡,并在中国、印度尼西亚、马来西亚、泰国及越南设立了全资法人银行,在全球拥有约500 间分行及办事处,分布在亚太、欧洲与北美的19 个国…

WebSpoon9.0(KETTLE的WEB版本)编译 + tomcatdocker部署 + 远程调试教程

前言 Kettle简介 Kettle是一款国外开源的ETL工具,纯Java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定 WebSpoon是Kettle的Web版本,由Kettle社区维护,不受Pentaho支持,…

用人话讲计算机:Python篇!(十二)正则运算+re模块

目录 一、正则表达式 (1)什么是正则表达式 (2)它的结构及使用 示例: 1.字符 . (←这里有个小点哦) 2.字符 | 3.字符 [ ] 4.字符^ 5.字符\d (3)补充&#xff…

Service Discovery in Microservices 客户端/服务端服务发现

原文链接 Client Side Service Discovery in Microservices - GeeksforGeeks 原文链接 Server Side Service Discovery in Microservices - GeeksforGeeks 目录 服务发现介绍 Server-Side 服务发现 实例: Client-Side 服务发现 实例: 服务发现介绍…

基于Python深度学习的【猫狗宠物识别】系统设计实现

一、简介 宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【‘阿比西尼亚猫(Abyssinian)’, ‘孟加拉猫(Bengal)’…

不能通过 ip 直接访问 共享盘 解决方法

from base_config.config import OpenSMB, SMB import os, time, calendar, requests, decimal, platform, fs.smbfsinfo_dict SMB.EPDI_dict info_dict[host] (FS03,10.6.12.182) info_dict[direct_tcp] True# smb OpenSMB(info_dict)print(ok)# 根据 ip 查询电脑名 impor…

11. qml ShaderEffect实现阴影效果

目录 MDropShadow.qml使用 MDropShadow.qml 基于上一章所制作的MGaussianBlur.qml 开发 MDropShadow阴影效果 import QtQuick 2.12Item {id: controlproperty var source;property real radius: 4property bool cached: falseproperty int offsetX: 0property int offsetY: 0…

10篇--图像噪点消除

概念 何为噪点? 噪点:指图像收到的一些干扰因素,通常是由图像采集设备、传输信道等因素造成的,表现为图像中随机的亮度,也可以理解为有那么一些点的像素值与周围的像素值格格不入。 常见的噪声类型 高斯噪声&#…

科研绘图系列:R语言绘制网络图和密度分布图(network density plot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载图1图2图3图4图5图6图7图8系统信息参考介绍 R语言绘制网络图和密度分布图(network & density plot) 加载R包 library(magrittr) library(dplyr) library(…

数据结构——ST表

ST表的定义 ST表,又名稀疏表,是一种基于倍增思想,用于解决可重复贡献问题的数据结构 倍增思想 这里列举一个去寻找一个区间内的最大值的例子 因为每次会将将区间增大一倍,所以才被称之为倍增思想 ,这种思想十分好用…

创建vue3项目步骤以及安装第三方插件步骤【保姆级教程】

🎙座右铭:得之坦然,失之淡然。 💎擅长领域:前端 是的,我需要您的: 🧡点赞❤️关注💙收藏💛 是我持续下去的动力! 目录 一. 简单汇总一下创建…

【PlantUML系列】部署图(七)

一、部署图的组成部分 节点(Node):使用node关键字定义一个节点,节点可以是服务器、数据库或其他硬件设备。组件(Component):使用component关键字定义一个组件,组件可以是软件模块或服…

hive 小文件分析

1、获取fsimage文件: hdfs dfsadmin -fetchImage /data/xy/ 2、从二进制文件解析: hdfs oiv -i /data/xy/fsimage_0000000019891608958 -t /data/xy/tmpdir -o /data/xy/out -p Delimited -delimiter “,” 3、创建hive表 create database if not exists…

java agent 介绍

java agent 系列 java agent 介绍 java agent-02-Java Instrumentation API java agent-03-Java Instrumentation 结合 bytekit 实战笔记 agent attach java agent-03-Java Instrumentation 结合 bytekit 实战笔记 agent premain java -javaagent 解释 在Java中&#xff…

【JAVA】旅游行业中大数据的使用

一、应用场景 数据采集与整合:全面收集旅游数据,如客流量、游客满意度等,整合形成统一数据集,为后续分析提供便利。 舆情监测与分析:实时监测旅游目的地的舆情信息,运用NLP算法进行智能处理,及…

Halcon面试题及参考答案

Halcon 的图像数据类型是什么? Halcon 中有多种图像数据类型。其中一种重要的数据类型是单通道图像(byte 类型),这种类型的图像像素值通常用一个字节(8 位)来表示,范围是 0 - 255,例如灰度图像,0 代表黑色,255 代表白色,中间的值代表不同程度的灰色。 还有整型图像,…

大屏开源项目go-view二次开发3----象形柱图控件(C#)

环境搭建参考: 大屏开源项目go-view二次开发1----环境搭建(C#)-CSDN博客 要做的象形柱图控件最终效果如下图: 其实这个控件我前面的文章也介绍过,不过是用wpf做的,链接如下: wpf利用Microsoft.Web.WebView2显示html…