跳表(skiplist)是一个非常优秀的数据结构,实现简单,插入、删除、查找的复杂度均为O(logN)。LevelDB的核心数据结构是用跳表实现的,redis的sorted set数据结构也是有跳表实 ...
跳表(skiplist)是一个非常优秀的数据结构,实现简单,插入、删除、查找的复杂度均为O(logN)。LevelDB的核心数据结构是用跳表实现的,redis的sorted set数据结构也是有跳表实 ...
redis配置文件的头文件,有一些和平台有关的配置,在这里边进行设置。 config.h config.c 读取配置文件,以及和配置文件有关的client命令的执行函数,可谓又臭 ...
这篇blog介绍dict的实现。 dict.c ...
hiredis是redis官方提供的c客户端库。在读代码的过程中,发现了一个bug,记录一下。 hiredis里定义了一个上下文结构(struct redisContext),代码如下(deps/h ...
这份代码是redis的client接口,其和server端的交互使用了deps目录下的hiredis c库,同时,在这部分代码中,应用了linenoise库完成类似history命令查询、自动补全等终 ...
sds和adlist一样,是redis的基础数据结构之一,是其为自身实现的字符串类型。A C dynamic strings library sds.h sds.c ...
redis可以被作为类似memcached的应用级缓存使用,在内存超过限制时,按照配置的策略,淘汰掉相应的kv,使得内存可以继续留有足够的空间保存新的数据。 redis的conf文件中有对该机制的一 ...
initServer是redis对server进行初始化的入口,其由main调用,位于initServerConfig、命令行参数解析、守护进程判定之后,是server最重要的入口点。 尽管代码看似 ...
serverCron是redis每隔100ms执行的一个循环事件,由ae事件框架驱动。其主要执行如下任务: 1.记录循环时间: redis使用全局状态cache了当前的时间值。在vm ...
ae.c是redis事件框架的具体实现,这篇blog对这份源码进行简单说明。其中谈到了作者已经标记的一些未来可能做的改进。 ae.c ...