redis源码分析
我阅读的源码版本是redis-2.8.19
src目录下总共96个.h,.c文件
1. 数据结构相关源码(15个左右)
字符串代码: sds.h, sds.c
字典:dict.h, dict.c
链表: adlist.h, adlist.c
跳跃表: redis.h/zskiplistNode, redis.h/zskiplis
整数集合: intset.h, intset.c
压缩列表:ziplist.h, ziplist.c
redisObject: redis.h/redisObject, object.c
2. 单机数据库
数据库对象: redis.h/redisServer, redis.h/redisDb, redis.h/redisClient
rdb持久化: rdb.c/rdbSave, rdb.c/rdbLoad
rdb文件格式: od -c dump.rdb
aof持久化: redis.h/redisServer.aof_buf
文件事件: Reactor模型, 包含(socket, epoll, 文件事件分派器,文件事件处理器)
文件事件源码: ae.h,ae_epoll.c, ae_kqueue.c, ae_select.c
ae.c/aeCreateFileEvent
ae.c/aeDeleteFileEvent
ae.c/aeGetFileEvent
ae.c/aeWait
ae.c/aeApiPoll
ae.c/aeProcessEvents
ae.c/aeGetApiName
文件事件处理器: networking.c/acceptTcpHander, networking.c/readQueryFromClent, networking.c/sendReplyToClient
时间事件
ae.c/aeCreateTimeEvent
ae.c/aeDeleteTimeEvent
ae.c/aeSearchNearestTimer
ae.c/aeProcessTimeEvent
客户端:redis.h/redisClient
服务器: serverCron
3. 多机数据库
复制: 旧版的实现,先sync,在命令传播
复制: 新版的实现,先sync,在命令传播,如果断线,执行psync
Sentinel:
集群:
redis源码分析的更多相关文章
- Redis源码分析:serverCron - redis源码笔记
[redis源码分析]http://blog.csdn.net/column/details/redis-source.html Redis源代码重要目录 dict.c:也是很重要的两个文件,主要 ...
- redis源码分析之事务Transaction(下)
接着上一篇,这篇文章分析一下redis事务操作中multi,exec,discard三个核心命令. 原文地址:http://www.jianshu.com/p/e22615586595 看本篇文章前需 ...
- redis源码分析之发布订阅(pub/sub)
redis算是缓存界的老大哥了,最近做的事情对redis依赖较多,使用了里面的发布订阅功能,事务功能以及SortedSet等数据结构,后面准备好好学习总结一下redis的一些知识点. 原文地址:htt ...
- redis源码分析之事务Transaction(上)
这周学习了一下redis事务功能的实现原理,本来是想用一篇文章进行总结的,写完以后发现这块内容比较多,而且多个命令之间又互相依赖,放在一篇文章里一方面篇幅会比较大,另一方面文章组织结构会比较乱,不容易 ...
- redis源码分析之有序集SortedSet
有序集SortedSet算是redis中一个很有特色的数据结构,通过这篇文章来总结一下这块知识点. 原文地址:http://www.jianshu.com/p/75ca5a359f9f 一.有序集So ...
- Redis源码分析(intset)
源码版本:4.0.1 源码位置: intset.h:数据结构的定义 intset.c:创建.增删等操作实现 1. 整数集合简介 intset是Redis内存数据结构之一,和之前的 sds. skipl ...
- Redis源码分析(dict)
源码版本:redis-4.0.1 源码位置: dict.h:dictEntry.dictht.dict等数据结构定义. dict.c:创建.插入.查找等功能实现. 一.dict 简介 dict (di ...
- Redis源码分析系列
0.前言 Redis目前热门NoSQL内存数据库,代码量不是很大,本系列是本人阅读Redis源码时记录的笔记,由于时间仓促和水平有限,文中难免会有错误之处,欢迎读者指出,共同学习进步,本文使用的Red ...
- redis源码分析(一)-sds实现
redis支持多种数据类型,sds(simple dynamic string)是最基本的一种,redis中的字符串类型大多使用sds保存,它支持动态的扩展与压缩,并提供许多工具函数.这篇文章将分析s ...
- Redis源码分析(skiplist)
源码版本: redis-4.0.1 源码位置: server.h :zskiplistNode和zskiplist的数据结构定义. t_zset.c: 以zsl开头的函数是SkipList相关的操作函 ...
随机推荐
- SIP 认证
理解SIP的认证 1. 认证和加密 认证(Authorization)的作用在于表明自己是谁,即向别人证明自己是谁.而相关的概念是MD5,用于认证安全.注意MD5仅仅是个hash函数而已,并不是 ...
- 转载:Java高并发,如何解决,什么方式解决
原文:https://www.cnblogs.com/lr393993507/p/5909804.html 对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并 ...
- javascript 类型比较方法
不要使用new Number().new Boolean().new String()创建包装对象: 用parseInt()或parseFloat()来转换任意类型到number: 用String() ...
- ios如何实现静音模式下声音仍然可以外放
AVAudioSession *audioSession = [AVAudioSession sharedInstance]; [audioSession setCategory:AVAudioSes ...
- cf777c 模拟
水题 /* 按列扫描一次矩阵,每个行向上最长sort长度即可 */ #include<bits/stdc++.h> using namespace std; #define ll long ...
- python接口自动化测试十二:对返回的json的简单操作
# 1.requests里面自带解析器转字典 print(r.json()) print(type(r.json())) # 取出json中的'result_sk_temp'字段 # {"r ...
- Linux下配置自动更新时间
1,修正本地时区及ntp服务 [root@VM_0_13_centos ~]# yum -y install ntp [root@VM_0_13_centos ~]# rm -rf /etc/loca ...
- python 全栈开发,Day131(向app推送消息,玩具端消息推送)
先下载github代码,下面的操作,都是基于这个版本来的! https://github.com/987334176/Intelligent_toy/archive/v1.4.zip 注意:由于涉及到 ...
- git的入门摸索和入门研究
git官网:https://git-scm.com/ git教程---菜鸟教程:http://www.runoob.com/git/git-tutorial.html git教程---廖雪峰:http ...
- Monitoring and Managing Tomcat
http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html