![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
theanarkh
这个作者很懒,什么都没留下…
展开
-
redis0.1源码解析之基本原理
本文分析redis的基础原理,暂不做深入分析,后续再详细分析。我们从main函数开始。int main(int argc, char **argv) { initServerConfig(); initServer(); aeCreateFileEvent(server.el, server.fd, AE_READABLE, acceptHandler, NULL, NULL) aeMain(server.el); return 0;}下面就四个函数进行分析原创 2020-05-25 00:46:17 · 273 阅读 · 0 评论 -
redis0.1源码解析之事件驱动
redis的事件驱动模块负责处理文件和定时器两种任务。下面是几个函数指针typedef void aeFileProc(struct aeEventLoop *eventLoop, int fd, void *clientData, int mask);typedef int aeTimeProc(struct aeEventLoop *eventLoop, long long id, void *clientData);typedef void aeEventFinalizerProc(struc原创 2020-05-24 19:53:02 · 242 阅读 · 0 评论 -
redis0.1源码解析之链表
分析代码之前先看看链表的数据结构。1 新建一个链表// 新建一个链表头结点list *listCreate(void){ struct list *list; if ((list = zmalloc(sizeof(*list))) == NULL) return NULL; // 空链表,还没有节点 list->head = list->tail = NULL; // 链表中的节点数 list->len = 0;原创 2020-05-24 19:29:33 · 146 阅读 · 0 评论 -
redis0.1源码解析之字典
字典也叫哈希表。看一下redis中的实现。下面是数据结构关系图。redis中,哈希表的设计思想是,申请一个指针数组,然后每个元素指向一个链表用来存储数据(即链地址法)。1 创建一个字典// 申请一个表示字典的数据结构dict *dictCreate(dictType *type, void *privDataPtr){ dict *ht = _dictAlloc(sizeof(*ht)); _dictInit(ht,type,privDataPtr);原创 2020-05-24 19:17:41 · 191 阅读 · 0 评论 -
redis0.1源码解析之内存分配
这是redis源码分析的第一篇,选取早期版本,一睹redis的基础原理。这篇分析内存分配。redis内存管理是对malloc系列函数做了封装。额外记录了申请的内存大小信息。#include <stdlib.h>#include <string.h>static size_t used_memory = 0;/* 分配sizeof(size_t)+size大小的内存,前面sizeof(size_t)个字节记录本次分配的大小, 记录分配的总内存大小,返回用于原创 2020-05-24 18:27:32 · 185 阅读 · 0 评论