写在前面:因为目前的工作需要长期跟redis打交道,然后自己也想把这块吃透,方便技术提升,所以写博客。 文章目录Redis源码阅读(一)zmalloc.hallocatorsrc/zmalloc.cPREFIX_SIZEupdate_zmalloc_stat_alloc和atomicIncrZMALLOCzcallocZREALLOCupdate_zmalloc_stat_freezstrdupz
转载
2023-09-09 23:17:35
82阅读
我们知道 mian 函数并不是程序执行的第一行代码,而是ELF文件格式开始执行第一个函数 _start 然后去加载动态链接库中的 __libc_start_main 函数,然后在__libc_start_main 函数中调用了_init 函数,在_init 函数中又继续调用 __gmon_start__,而在 __libc_start_main中也调用了 main 函数。所以前置条件我们已经有了,
转载
2023-08-15 17:15:58
26阅读
我们知道redis用的epoll,但是底层的代码到底是怎样一步步起来的,本文解读redis的网络框架,一探究竟。一、 核心数据结构ConnectionType, ConnectionType定义了网络连接的接口,包含read、write等,具体定义如下。typedef struct ConnectionType {
void (*ae_handler)(struct aeEventLoop
转载
2023-08-30 08:25:47
83阅读
# Redis 5设计与源码分析PDF生成指南
Redis是一个开源的高性能键值对数据库,广泛用于缓存和数据存储。为了深入理解Redis的设计与源码,我们可以创建一个涉及Redis 5的设计与源码分析的PDF文档。本文将逐步引导你完成这一过程,包括所需的代码、工具和过程的细节。
## 流程概述
下面是生成“Redis 5设计与源码分析PDF”的步骤概要:
| 步骤 | 描述
第20章 持久化RDB 1.save 60 1000 : 60秒内有1000个key发生变化,就会触发一次RDB快照的执行2.在客户端执行bgsave命令,显式触发一次RDB快照的执行,fork 一个子进程执行rdbSave函数进行实际的快照存储工作, 父进程可以继续处理客户端请求 加载RDB文件的时候,如何区分加载的
转载
2024-10-20 18:40:40
59阅读
# Redis 源码探秘:深入了解 Redis 数据库
Redis 是一个开源的内存数据结构存储系统,广泛应用于缓存、消息代理和数据持久化等场景。其快速、高效、灵活的特性使得它在当今的大数据时代中备受重视。本文将通过分析 Redis 的源码,带领大家深入了解其内部结构与工作原理。
## 一、Redis 的基本架构
Redis 的基本架构可以分为客户端和服务器端。客户端通过网络接口与 Redi
Redis进阶一、 命令:a) info replication#查看当前redis实例在集群中的信息b) raft算法选举领头哨兵c) 配置参数requirepass passwordd) 客户端连接后需要发送auto passworde) dbsize#查看数据库字典的键值对个数f) expire ttl; pexpire ttl;expireat timestamp;pexpireat t
文章目录1. Redis 集群2. 关键数据结构2.1 集群状态 clusterState2.2 集群节点 clusterNode2.3 集群连接 clusterLink2.4 集群消息 clusterMsg3. 集群建立源码分析3.1 集群节点的初始化3.2 cluster meet 邀请节点加入集群3.3 被邀请节点的处理3.4 连接建立后发起邀请节点发送 PING 消息3.5 连接建立后被
转载
2023-06-13 11:19:11
216阅读
1. Redis 集群 在 RedisCluster 集群实现原理 中已经介绍过 Redis 3.0 版本以后使用 RedisCluster 作为分布式解决方案,其整个集群网络的建立依赖 Gossip 协议。以下为 Redis 集群建立的示意图,其大致处理流程为以下几个步骤:节点A 邀请 节点B 加入集群,节点A 与 节点B 建立连接 节点A 邀请 节点C 加入集群,节点A 与 节点C 建立连接。
转载
2023-09-28 19:35:19
84阅读
Ceph源码分析PDF是一份关于开源分布式存储系统Ceph的技术文档,对于想要深入了解Ceph的开发者来说,这份PDF是一本宝典。Ceph是一个高可靠性、高可扩展性的分布式存储系统,其设计思想和实现方式都非常独特。通过对Ceph源码的分析,开发者可以更好地理解Ceph的工作原理和内部机制。
在Ceph源码分析PDF中,你可以找到Ceph的核心组成部分与模块,比如RADOS、Monitors和OS
原创
2024-02-02 14:26:37
197阅读
Ceph源码分析 PDF — 了解分布式存储系统的基石
Ceph是一个开源的分布式存储系统,它广泛应用于云计算环境中。在Ceph的背后,是一个庞大而复杂的源码,其中蕴含了许多强大的功能和优化。本文将着重讨论Ceph源码分析的重要性,并介绍了一本与之相关的PDF书籍。
为什么要进行Ceph源码分析呢?首先,Ceph作为一种分布式存储系统,其核心目标是在大规模集群中提供高性能和高可靠性。要理解Ce
原创
2024-02-04 13:25:05
177阅读
此文章已于 9:36:45 2020/10/15 发布到将军上座2.1 数据结构 Redis 3.2之前的SDS struct sds {
int len;// buf 中已占用字节数
int free;// buf 中剩余可用字节数
char buf[];// 数据空间
}; sdshdr5结构在Redis5.0中,我们用如下结构来存储长度小于32的短字符串:struct __attr
转载
2023-08-09 21:57:43
219阅读
前言学习本文之前先问大家一个问题,为什么要学习redis?不知道如何回答的朋友,请继续往下看!总共总结为三点的内容,大家仔细斟酌一下:1.Redis应用广泛,它有卓越的性能、丰富的数据类型,简洁高效的设计理念。2.Redis 5带来了很多不错的新特性:增加了新的流数据类型更新了定时器、集群和字典相关的API增加了新的有序集合命令3.要想做好日常开发和运维工作,需要对Redis的底层原理和实现,尤其
转载
2024-01-21 19:35:35
59阅读
本章将介绍键相关命令的源码实现。命令实现的过程中不是直接操作这些数据结构,我们将在10.1节讲解这两个结构。在理解了redisDb和redisObject对象之后,我们按照查看键信息、设置键信息、查找和操作键将本章命令进行分类讲解,10.2节讲解查看键信息相关命令,其中object和type命令是获取redisObject对象相关属性的操作,过期时间读取和修改相关命令是对redisDb的expir
转载
2023-09-13 16:20:32
116阅读
数据结构我们查看server.h中redisServer数据结构可以看出,其功能得有多复杂。因此在这里我会将其拆成一个个小块,有些内容会在后面单独进行详细分析。而且都做了详细的注释,在这里我就不贴出来。大致分为如下几个部分。通用参数(General)模块(Modules)网络(Networking)常见的命令回调函数统计相关(stat)配置信息(Configuration)AOF持久化相关(包括a
转载
2023-08-14 16:47:21
110阅读
学习Redis不仅要学习各种命令的使用,如果有时间最好阅读以下redis的源码。 一.数据结构与对象用过Redis的中支持的五大数据类型:字符串String、列表List、集合Set、哈希表Hash、有序集合ZSet。 那么他们底层C语言是如何实现的呢?先来介绍一下底层所用到的数据结构,分别是:简单动态字符串、链表、字典、跳跃表、整数集合、压缩列表。简单动态字符串简单动态字符串(simple dy
转载
2023-08-10 14:31:58
83阅读
# Redis源码剖析PDF的实现指南
随着对分布式系统的深入理解,剖析开源项目的源代码是开发者重要的能力之一。Redis作为一个高性能的内存数据库,深入了解其源码可以帮助我们更好地使用和优化它。本文将指导你如何实现一个“Redis源码剖析PDF”的项目,以下是整个流程的步骤。
## 实现流程
| 步骤 | 描述
原创
2024-09-20 05:34:05
79阅读
文中内容参考《redis设计与实现(第二版)》和redis源码,由于该书写的比较早,主要以源码(redis5.0.5)为主。 虽说是参考的源码的,但是主要内容仍然来自书籍。 笔记中的内容并不完整,redis有点儿多,先做一个简单的整理,如果工作中会用到的话再做一个完整的版本吧! 前面的相关数据结构部分可以看一下,后面的内容并没有很全面的整理,之后需要的话对源码进行一次完整的阅读。1 r
转载
2024-03-06 21:01:19
9阅读
2018/4/7 从今天开始,记录学习Redis源码的一些笔记,写一些自己的理解与总结。主要以概念和自己觉得重要的东西为主。希望能在一个月内看完。首先开篇先看redis中sds链表的实现。数据结构其数据结构异常简单typedef char *sds;就一个字符串指针。/* Note: sdshdr5 is never used, we just acc
转载
2023-09-22 13:07:45
46阅读
一、set方法1,先去调用底层的connect方法,去进行一个socket连接
connect
从源码中可以看到是通过CP协议与redis建立socket连接,此时可以将redis理解为一个serverSocket。 2.手写模拟一个redispublic class ServerSocketRedis {
public static void main(S
转载
2023-05-30 09:14:33
144阅读