Redis学习路径(构建体系)

学习路径

  • 掌握数据类型(分析底层数据结构)和缓存的基本使用   (理论+使用) 
  • 掌握 redis 实现高性能,高可靠、高可用技术  (理论)
  • 学习redis源代码底层实现  (底层实现)

先来一个引言,比较宏观的角度,先不考虑细节问题(先不谈理论,按照正常的发展思路,看看需要解决哪些问题,于是衍生出哪些技术):

Redis是一款内存数据库,这个数据存储在内存中,如果说突然发生意外,Redis主机断电了宕机了,那么内存中的数据就丢失掉了。所以我们需要像个办法解决由于断电、宕机导致的Redis在内存当中的数据丢失性问题?

你说,我们可以从新从MySQL后端数据库来恢复,但是这样太慢了,几乎就是从头开始。我们是否可以在 Redis 本机所在机器上永久的保存数据?

所以我们需要持久化的技术来解决。要持久化,就意味着数据必须保存到非易失性存储介质磁盘上。(AOF写操作日志、RDB内存快照持久化机制)。

这样子,就不担心这个数据丢失了。

但是,如果Redis发生了宕机,我们虽然有持久化,可以进行数据恢复,但是恢复是需要一定时间的,恢复的过程就没法对外提供服务,这显然也是不可接受的。

所以,我们需要解决在主要节点数据恢复期间还可以正常对外提供服务的问题? (主从复制)

我们就可以搞多个服务节点嘛,一个服务节点挂掉了,可以让其他服务节点继续提供嘛。如果这些服务节点有一个Boss 节点,其他的服务节点都是从Boss节点这里copy来的。Boss节点同步跟新这些子节点。如果是子节点挂掉,其实影响并不大,如果Boss节点挂掉,这个影响就特别大。

所以,我们需要解决在这个Boss节点挂掉的情况下,从下属节点中从新选拔一个Boss出来?(手动主从切换   ---》 自动主从切换)

选这个节点那肯定是跟 Boss 关系最近,最像的。(涉及一个选举问题)

这些都是单个Redis实例之上的问题,如果说一个Redis实例太大了。会不会出现许多问题?比如说持久化产生的文件AOF,RDB会不会特别大?太大了,这个恢复过程会不会特别缓慢,多个节点从Boss主节点那里copy代价会不会变大?

要解决这个问题,我们是不是可以想到把数据分摊到多个 Redis 实例上面去,做一个分流。当然可以。不过需要考虑很多问题。负载均衡的问题,还有这个数据分片的问题。我们把整个需要缓存的数据切开多份。

每一份如何对应给Redis实例?用什么算法去对应?

我首先可以想到的就是Hash,因为hash天然对应很多槽位。我们可以对数据的key值进行Hash运算、映射到槽位,槽位是固定的。我们可以把槽位分配给Redis主机。

再思考一下,当我们维护多实例的时候,必不可少的需要通信,所以实例与实例之间应该依赖什么来进行通信,来达到一个状态的同步,一致性。这必然也是需要解决的问题。但是小杰这块尚且无法理解。所以慢慢沉淀。

如下这些标题,就是小杰之后写这个博客后续要完成的,现在只是写出自己的一个规划目录。后续再驱动性、方向性的步步完成。

Redis数据类型的使用

Redis底层数据结构

Redis缓存机制和应用

Redis高性能原理

Redis高可靠策略

  • 持久化机制

Redis高可用策略

  • 主从复制机制
  • 故障转移,自动恢复

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

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

相关文章

Linux常用操作命令

Linux作为一种广泛应用的操作系统,其强大的命令行工具使得用户能够高效地管理文件、处理数据和监控系统。在本文中,我们将深入 探讨一些常用的Linux操作命令及其用法。 ls:列出当前目录下的文件和子目录。 ls [选项] [文件或目录]常用选项&am…

Python实现MACD工具判断信号:股票技术分析的工具系列(1)

Python实现MACD工具判断信号:股票技术分析的工具系列(1) 介绍代码rolling函数介绍核心代码计算指数移动平均值计算MACD指标 完整代码 介绍 先看看官方介绍: MACD (平滑异同平均线) 指标说明 DIF线:收盘价短…

#单片机(TB6600驱动42步进电机)

1.IDE:keil 2.设备:保密 3.实验:使用单片机通过普通IO口控制TB6600驱动42步进电机 4.时序图: TB6600 ENA、ENA-DIR-、DIRPUL-、PULB-、BA、A-VCC、GND使能电机(直接悬空不接)方向脉冲输入(普通IO口模拟即可&#xff…

Linux系统编程7--线程 写个测试脚本

Linux系统编程7–线程_写个测试脚本 参考博客: Linux多线程编程初探 - 峰子_仰望阳光 - 博客园 (cnblogs.com) 我的PC是8核*16进程,所以在固定的时间点,我可以同时运行8 * 16的进程,更多的线程(任务管理器)…

【学习笔记】Diffusion扩散模型

导读 Diffusion models是现在人工智能领域最火的方向之一,并引爆了AIGC领域,一大批创业公司随之诞生。 AIGC(AI-Generated Content):人工智能创作内容的生产方式。 扩散模型Diffusion 扩散模型Duffison的训练过程 …

等概率事件算法

1等概率的生成(0-8)范围内的正整数 // Math.random 数据范围[0,1) 且 是 等概率的产生随机数 // 应用: // 1.生成等概率的整数(等概率的生成(0-8)范围内的正整数 int value (int) (Math.random() * 9); System.out.println("value "…

非阻塞实现高效键盘扫描功能(STM32F4XX)

目录 概述 1 原理分析 1.1 技术背景 1.2 系统硬件 1.3 STM32 IO(输入模式)寄存器分析 1.3.1 输入IO的功能描述 1.3.2 输入配置 1.3.3 GPIO 寄存器(输入模式相关) 1.3.3.1 GPIO 端口模式寄存器 1.3.3.2 GPIO 端口上拉/下拉…

springboot,druid动态数据源切换

关键字:springboot,druid数据库连接池,两个数据源(可以切换成多个),事务管理 关于druid简介传送门:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 具体分为四…

Doris【数据模型】

一、数据模型简介 在 Doris 中,数据以表(Table)的形式进行逻辑上的描述。 一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。 Column 可以分为两…

autoware.universe中跟踪模块详解,一看就懂!

目录 问题:阅读关键点:总结问题: 根据对预测模块代码的分析,发现预测框出现在点云前方的原因在于跟踪框出现在点云前方 对rviz上的目标进行观察后发现 车辆的检测框先出来一段时间后,跟踪框和预测框同步一块出来 跟踪框总是超出点云一部分 阅读关键点: 每个跟踪器最少要统计…

7.1.2 Selenium的用法1

目录 1. 初始化浏览器对象和访问页面 2. 查找节点及节点交互 2.1 查找单个节点 (1)获取方法1——特定方法 (2)通用方法 2.2 查找多个节点 2.3 节点交互 3. 动作链 4. 执行 JavaScript 之下拉进度条 5. 获取节点信息 5.…

谷歌seo推广秒收录怎么做?

谷歌SEO推广秒收录想要做到,可以利用我们光算科技独家技术,GSI快速收录,通过技术手段和操作,帮你的网站快速被谷歌发现和记录 这项技术具体核心就是GPC爬虫池系统,这个系统是专门研究谷歌搜索引擎优化的规律和算法创造…

【QT】QTableView或QTableWidget 搭配QLineEdit实现数据的搜索显示

在 Qt 中,QTableView 和 QTableWidget 都可以用来实现数据的搜索和显示,但它们的适用场景和实现方式有所不同: QTableView 适用场景:QTableView 适用于更复杂的场景,尤其是当需要处理大量数据或需要高度定制化的表格时…

66-ES6:var,let,const,函数的声明方式,函数参数,剩余函数,延展操作符,严格模式

1.JavaScript语言的执行流程 编译阶段:构建执行函数;执行阶段:代码依次执行 2.代码块:{ } 3.变量声明方式var 有声明提升,允许重复声明,声明函数级作用域 访问:声明后访问都是正常的&…

拿下边界机器进行内网渗透的方案

拿下机器后,使用代理访问内网 windows环境:reGeorg与proxifier Linux环境:reGeorg与proxychains, 使用nmap等工具进行扫描,发现web服务的主机和其它信息。有时这些边界机器上会记录一些 内网服务器上的一些信息&…

QT C++实现点击按键弹出窗口并显示图片/视频|多窗口应用程序的设计和开发

一、介绍 首先,QT界面开发中主要大体分为2种多窗口的形式: 嵌入式: 新生成的窗口嵌入在主窗口内部独立窗口: 以弹窗形式的新窗口生成和展示 这里就讲解最简单的:点击案件后,跳出一个新窗口 二、代码实…

利用FFMPEG 将RTSP流的音频G711 转码为AAC 并 推流到RTMP

之前我们的视频转码项目中 是没有加入音频的 现在 需要加入音频 ,由于RTMP只支持AAC的 音频流 而有的RTSP流的音频编码并不是AAC 大多数都是G711编码 还分为G711A 和G711U 之前用ffmpeg命令行可以直接 完成转码 并推送到RTMP 但是考虑到无法获取更详细的状…

Qt篇——QTableWidget保存表格数据到Excel文件中,读Excel内容到QTableWidget

表格和excel例子如下图所示&#xff1a; 一、QTableWidget保存表格数据到Excel文件中 代码如下&#xff1a; &#xff08;pro文件中添加QT axcontainer&#xff09; #include <QAxObject>void MainWindow::saveTableToExcel() {QDateTime current_date_time QDateTi…

六、MQTT源码简单浏览

1、MQTT程序分层 1.1、MQTT客户端工作流程 (1)连接MQTT服务器。 (2)客户端向服务器发送订阅主题。 (3)客户端等待MQTT的消息。 (4)客户端向服务器发送消息。 2.2、MQTT程序结构 APP层 while循环或一个进程中&#xff1a;等待消息&#xff0c;处理消息&#xff1b; 发送消…

[法规规划|方案实操]数据资产入表,城投将获融资新渠道

2023年8月&#xff0c;财政部发布了《企业数据资源相关会计处理暂行规定》&#xff0c;并从2024年1月1日开始实施&#xff0c;标志着数据资产正式纳入企业的资产负债表。这一举措被视为数据资产从理论走向实践的重大一步。 数据资产入表对城投运营模式的影响 随着全球经济格局…