08 2021 档案

摘要:Redis集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。 1. 节点 节点通过三次握手将其他节点添加到自己所处的集群当中。 每个节点clusterNode都保存着一个clusterState结构,这个结构记录了在当前节点的视角下,集群目前所处的状态。 2. 槽指派 Red 阅读全文
posted @ 2021-08-30 19:28 慕仙白 阅读(117) 评论(0) 推荐(0)
摘要:Sentinel (哨兵)是Redis的高可用性解决方案:由一个或多个sentinel实例组成的sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的 阅读全文
posted @ 2021-08-28 17:30 慕仙白 阅读(93) 评论(0) 推荐(0)
摘要:用户可以通过SLAVEOF命令让一个服务器去复制另一个服务器,下面命令中,127.0.0.1:12345是从服务器,127.0.0.1 6379是主服务器。 1. 旧版复制功能的实现 Redis的复制功能分为同步(sync)和命令传播(command propagate)两个操作: 同步操作用于将从 阅读全文
posted @ 2021-08-26 13:34 慕仙白 阅读(81) 评论(0) 推荐(0)
摘要:1. 客户端 1.1 客户端属性 客户端状态包含的属性分为两类: 一类是比较通用的属性,无论客户端执行什么工作,都需要用到这些属性。本节主要涉及这些属性 另外一类是和特定功能相关的属性,比如操作数据库时用到的db属性和dictid属性,执行事务时需要用到的mstate属性,以及执行WATCH命令时要 阅读全文
posted @ 2021-08-25 20:44 慕仙白 阅读(375) 评论(0) 推荐(0)
摘要:1. 事件 Redis服务器是一个事件驱动程序,服务器处理以下两类事件: 文件事件(file event):Redis服务器通过套接字与客户端(或其他Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或其他服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理 阅读全文
posted @ 2021-08-25 14:23 慕仙白 阅读(271) 评论(0) 推荐(0)
摘要:1. RDB 持久化 Redis是内存数据库,将数据库中的数据存储在内存中,通过RDB持久化功能,可以将Redis在内存中的数据库状态(服务器中的非空数据库以及它们的键值对统称为数据库状态)保存到磁盘里面,避免数据意外丢失。 1.1 RDB文件的创建和保存 SAVE命令由服务器进程执行保存功能,BG 阅读全文
posted @ 2021-08-24 19:35 慕仙白 阅读(192) 评论(0) 推荐(0)
摘要:1. 服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态redis.h / redisServer结构的db数组中,db数组的每个项都是一个redis.h/redisDb结构,每个redisDb结构代表一个数据库: 2. 切换数据库 3. 数据库键空间 Redis是一个键值对数据库服务 阅读全文
posted @ 2021-08-24 14:26 慕仙白 阅读(104) 评论(0) 推荐(0)
摘要:1. 对象的类型与编码 Redis中的每个对象都由一个redisObject结构表示,该结构中和保存数据有关的三个属性分别是type属性,encoding属性和ptr属性: 1.1 类型 对于redis中保存的键值对来说,键总是一个字符串对象,而值则可以是字符串对象、列表对象、哈希对象、集合对象或者 阅读全文
posted @ 2021-08-24 08:14 慕仙白 阅读(77) 评论(0) 推荐(0)
摘要:1. 简单动态字符串 下图是简单动态字符串(simple dynamic string, SDS)的结构表示 free属性的值为0,表示这个SDS没有分配任何未使用空间 len属性的值为5,表示这个SDS保存了一个5字节长的字符串 buf属性是一个char类型的数组,数组的前五个字节分别保存了R, 阅读全文
posted @ 2021-08-13 16:11 慕仙白 阅读(177) 评论(0) 推荐(0)
摘要:1. MySQL索引为什么使用B+树数据结构,而不是B树,红黑树等? 1.1 二叉查找树/二叉搜索树 下图b为二叉查找树的典型结构,其特点为: 任意节点左子树不为空,则左子树的值均小于根节点的值 任意节点右子树不为空,则右子树的值均大于于根节点的值 任意节点的左右子树也分别是二叉查找树 没有键值相等 阅读全文
posted @ 2021-08-11 22:01 慕仙白 阅读(183) 评论(0) 推荐(0)
摘要:1. 事务 事务可由一条非常简单的SQL语句组成,也可以由一组复杂的SQL语句组成。事务是访问并更新数据库中各种数据项的一个程序执行单元。在事务的操作中,要么都做修改,要么都不做。ACID特性: Aotomicity(原子性) 整个数据库事务是不可分割的工作单位。只有事务中所有的数据库操作都执行成功 阅读全文
posted @ 2021-08-10 19:58 慕仙白 阅读(201) 评论(0) 推荐(0)
摘要:1. 备份 1.1 根据备份方法不同可以划分为: 热备(Hot Backup) ibbackup是InnoDB存储引擎备份的首选方式,只不过是收费软件。其工作原理如下: 1) 记录备份开始时,InnoDB存储引擎重做日志文件检查点的LSN 2) 复制共享表空间文件以及独立表空间文件 3) 记录复制完 阅读全文
posted @ 2021-08-09 16:41 慕仙白 阅读(395) 评论(0) 推荐(0)
摘要:开发多用户、数据库驱动的应用时,最大的一个难点是:一方面要最大程度地利用数据库地并发访问,另外一方面还要确保每个用户能以一致地方式读取和修改数据。 1. 什么是锁 锁机制用于管理对共享资源地并发访问。InnoDB存储引擎会在行级别上对表数据上锁。 2. lock与latch latch是一种轻量级地 阅读全文
posted @ 2021-08-08 22:34 慕仙白 阅读(136) 评论(0) 推荐(0)
摘要:1. InnoDB逻辑存储结构 表是根据主键顺序组织存放的,这种存储方式的表称为索引组织表。 所有数据被逻辑的存放在一个空间中,称为表空间(tablespace),表空间又由段(segment)、区(extent)、页(page)等组成。 1.1 表空间 默认情况下,InnoDB存储引擎有一个共享表 阅读全文
posted @ 2021-08-05 18:40 慕仙白 阅读(239) 评论(0) 推荐(0)
摘要:1. 参数文件 MySQL实例启动时,数据库会先读取参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数。与Oracle数据库不同的是,如果没有配置参数文件,MySQL启动时,会加载默认值。 静态参数是只读的,动态参数可以在MySQL实例运行中进行更改,其修改范围可以参考MySQL官方手 阅读全文
posted @ 2021-08-04 21:09 慕仙白 阅读(159) 评论(0) 推荐(0)
摘要:1. InnoDB 体系架构 1.1 后台线程 后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中缓存的是最近的数据。此外,还会将已修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常的情况下InnoDB能恢复到正常运行的状态。 InnoDB存储引擎是多线程的模型,其后台有多个不同的后台线程 阅读全文
posted @ 2021-08-04 19:40 慕仙白 阅读(108) 评论(0) 推荐(0)
摘要:1. 数据库和数据库实例 数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器(计算机主存储器或内存之外的所有可访问存储器,如移动/固定硬盘,光盘)中的数据集合。在MySQL数据库中,数据库文件可以是frm, MYD, MYI, ibd结尾的文件。 数据库实例是程序,是位于用户和操作系统 阅读全文
posted @ 2021-08-02 16:40 慕仙白 阅读(116) 评论(0) 推荐(0)