Redis了解

news2024/10/7 1:13:46

Redis

源码大概做了哪些事情?

  1. 设置默认参数
  2. 创建对象、持久化定时器回调
  3. 加载文件参数 (使用配置文件替代部分默认参数)
  4. 加载文件数据写入字典
  5. 创建client connect事件handler(accept后,写入读写事件select(),最新的版本用epoll)
  6. 遍历网络事件链表以及定时器链表
  7. 退出

三种集群

1.主从复制
从服务器主动获取 主服务器的数据
在这里插入图片描述
2.哨兵模式
一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在主服务器下线时可以自动切换从服务器升级为主服务器。

3.集群模式
哨兵模式基本已经实现了高可用,但是每台机器都存储相同内容,很浪费内存,所以集群模式实现了分布式存储。每台机器节点上存储不同的内容。
集群模式要求至少需要3个master才能组成一个集群,同时每个master至少需要有一个slave节点。各个节点之间保持TCP通信。当master发生了宕机, Redis Cluster自动会将对应的slave节点提拔为master,来重新对外提供服务。

持久化

RDB

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。
父进程在保存RDB文件时唯一要做的就是fork出一个子进程,然后这个子进程就会处理接下来的所有保存工作,父进程无需执行任何磁盘I/O操作。这个也是一个缺点,如果数据集比较大的时候,fork可以能比较耗时,造成服务器在一段时间内停止处理客户端的请求
RDB 在恢复大数据集时,速度比 AOF 的恢复速度要快。

Redis异常退出,就会丢失最后一次快照以后更改的所有数据。

AOF

AOF方式是将执行过的写指令记录下来,在数据恢复时按照从前到后的顺序再将指令都执行一遍,就这么简单。
AOF重写

  1. redis会创建(fork)一个“重写子进程”,这个子进程会首先读取现有的AOF文件,并将其包含的指令进行分析压缩并写入到一个临时文件中。
  2. 主工作进程会将新接收到的写指令一边累积到内存缓冲区中,一边继续写入到原有的AOF文件中,这样做是保证原有的AOF文件的可用性,避免在重写过程中出现意外。
  3. 当“重写子进程”完成重写工作后,它会给父进程发一个信号,父进程收到信号后就会将内存中缓存的写指令追加到新AOF文件中。
  4. 当追加结束后,redis就会用新AOF文件来代替旧AOF文件,之后再有新的写指令,就都会追加到新的AOF文件中了。

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

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

相关文章

xlsx 导出 (简单使用)

下载数据为xlsx 安装 npm install xlsx 在src下创建文件utils文件夹,在utils文件夹下创建XLSX.js文件 // 下载excel功能 import * as XLSX from xlsx/*** param dataList 表格数据内容 array* param fileName 文件标题。必须以 .xlsx结尾*/ export const download…

Linux网络——Shell编程之快捷命令

Linux网络——Shell编程之快捷命令 一、快捷排序 — sort 命令二、快捷去重 — uniq 命令三、快捷替换 — tr 命令四、快速裁剪 — cut 命令五、文件拆分 — split 命令六、文件合并 —paste 命令七、变量扫描器 — eval 命令 一、快捷排序 — sort 命令 sort命令用于以行为单位…

五步看平台,选好安全的MT4交易外汇平台

在选择MT4外汇交易平台时,如何避免不正规的平台?以下是5招教你远离不正规MT4交易外汇平台。 1. 查看平台是否取得合法许可证 首要考虑的是该平台是否取得了合法的许可证。许可证是证明一个交易平台合法的最重要证据,因此务必在选择时核查该平台的许可证…

得物深入浅出解析JVM中的Safepoint

1.初识Safepoint-GC中的Safepoint 最早接触JVM中的安全点概念是在读《深入理解Java虚拟机》那本书垃圾回收器章节的内容时。相信大部分人也一样,都是通过这样的方式第一次对安全点有了初步认识。不妨,先复习一下《深入理解Java虚拟机》书中安全点那一章…

你真的了解Java类加载机制吗?

大家好,我是小米,一个喜欢分享技术的程序员。今天我来给大家简述一下Java类加载模型。 在Java中,类的加载过程是在程序运行时动态进行的。Java的类加载模型可以分为三个步骤:加载、连接和初始化。 类加载过程:加载 首…

Android面试指南:谈谈你对Flutter的理解

一、Flutter简介 Flutter是由Google开发的一种基于Dar编程语言的移动应用开发框架。可以帮助开发在构建高性能、美观、灵活的应用程序,从而实现跨平台开发,适用于与Android、ios、web、windows、macOS和linux等多个平台。 二、学习Flutter有什么优势 …

Java EE企业级应用开发(SSM)第11章

第11章SSM框架 一.预习笔记 1.准备jar包(注意版本) Spring一套包 Springmvc两个 Mybatis一个 Spring整合mybatis一个 Jstl一个用于jsp显示数据 Mysql一个用于访问数据库 Gson一个用于返回json数据 2.准备配置文件web.xml applicationContext.xml…

MySQL Client

MySQL客户端很多,自身携带的一些客户端工具也需要了解,方便快速测试。 MySQL Shell MySQL Shell Commands。 执行SQL语句时,必须切换到SQL模式。Shell指令较少,同时可以使用Python \py模式。 MySQL Shell所有的命令后面不需要加…

TCP通道和共享链路通道

推送SDK为了适应不同的场景和需求,对于一些对消息及时性、可靠性、自定义性要求高的应用,如即时通讯、社交、游戏等,可能更倾向于使用TCP通道,对于一些对消息节省流量、耗电量、兼容性要求高的应用,如新闻、天气、股票…

【软件工程】自动化测试保证卓越软件工程能力(3)

测试目标定义 对照目标系统,如下: 给出自动化测试平台目标如下: Case levelCase briefReport send toOVERALLUser 1 -> Process -> Customer 1BossLevel 1User 1 -> Process -> Customer 1 User 1 -> Process -> Custome…

AI自动写文章工具-ai文章智能生成器

随着人工智能技术的快速发展,越来越多的应用开始使用AI自动生成文章的功能,实现全自动、高质量和高效率的文章写作。本文将从全自动批量生成、没有错别字和标准语法、自动插入图片以及严格按照标准格式结构生成几个方面,展开对AI自动生成文章…

数据分析04——Pandas简介/Series对象/DataFrame对象

1、Pandas简介: Pandas是基于NumPy开发的数据分析三大剑客之一,Python数据分析的核心库提供快速、灵活、明确的数据结构Series对象:一维数组结构,由index和value构成DataFrame对象:二维数组结构,由index、…

MySQL基础(二十五)InnoDB数据存储结构

1 数据库的存储结构:页 索引结构给我们提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的,确切说是存储在页结构中。另一方面,索引是在存储引擎中实现的,MySQL服务器上的存储引擎负责对表中数据的读取和写入工作…

在外Windows公网远程连接MongoDB数据库

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自远程内网穿透的文章:公网远…

友元函数,友元类,内部类及其之间的关系,匿名对象等

TIPS 当某一个类当中有自定义类型成员变量的时候,然后对该类的实例化对象调用函数的时候走初始化列表的时候,如果说要对自定义类型成员变量进行初始化列表初始化的时候,尽管那个自定义类型它的构造函数是没有参数的,但是此时括号…

数据剖析更灵活、更快捷,火山引擎 DataLeap 动态探查全面升级

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近期,火山引擎 DataLeap 上线“动态探查”能力,为用户提供全局数据视角、完善的抽样策略,提高数据探查的灵活度以及响应速率。 …

【STL模版库】string类:模拟实现string类

一、成员变量 private:char *_str;size_t _size;size_t _capacity;public:static size_t npos -1; //编译报错,不能在类中初始化const static size_t npos -1; //[1]const char* c_str() const{ //[2]return _str;}size_t size() const{return _size;} size_t ca…

智慧水务云平台助力“十四五”水安全保障规划!

一、《“十四五”水安全保障规划》 水利部印发《“十四五”水安全保障规划》,规划中指出,“十四五”期间要抓好8个方面重点任务。 一是实施国家节水行动,强化水资源刚性约束。 二是加强重大水资源工程建设,提高水资源优化配置能…

Mongo执行计划explain分析

3.0+的explain有三种模式,分别是:queryPlanner、executionStats、allPlansExecution。现实开发中,常用的是executionStats模式。 1.使用方式 在查询语句后面加上explain("executionStats") db.user.find({"roleCodes":"xsbj","status&…

详细操作Selenium自动化测试之中的断言

Selenium常用的断言包括 页面属性断言:断言标题、url或页面源码中是否包含或不包含特定字符元素存在断言:断言指定元素存在图片及链接断言:断言图片正常显示、链接可以正常打开 页面属性断言 这是最常用的断言方式,可以用来断言…