深入理解redis

最近想要手写 一个redis,找到了网上的一门教程,想先跟着过一遍可长城,然后再去复现,具体大概入下

深入理解redis_第1张图片
要理解redis我们主要从核心概念,主要流程,数据结构这三个方面去理解
下图是redis的数据结构部分
深入理解redis_第2张图片
如图,redis1.0也就只有几千行,代码很少,主要有上图的几个包组成,redis.c ,redis-cli.c(redis-client以及redis-server) ae.c(ae事件库),anet.c(ae网络库),zmalloc.c(内存库)

上图是redis核心概念图
redisclient主要有四个组成部分,fd文件描述符,db是一个指向redisDBList的指针,clients是指向redisClientList的指针,最后是最后一个最核心的事件循环,是指向AeEventLoop的指针
redisServer主要也是四个,fd,db同上queryBuffer主要是用来存储查询请求的,reply是一个指向redisObjectList的指针,用来存储返回值

redis里面有一个RedisDB,是一个很大的字典,并且其中的expire表示其有过期时间,int唯一标识

redisObj的结构非常有意思,他的ptr是一个指向任意类型的指针,type表示指向对象的类型,refcount表示指向对象的引用次数
深入理解redis_第3张图片
redis的核心流程主要分为启动流程以及请求流程两部分
关于为什么不用libevent.C是因为这个包太重了,redis只有几千行没必要再引入一个很重的包
深入理解redis_第4张图片
redis的核心数据结构如上,RedisObj,Dict,adlist

你可能感兴趣的:(JAVA学习实战,系统设计,redis,java,数据库)