首页 > 代码库 > [redis读书笔记] 第二部分 单机数据库

[redis读书笔记] 第二部分 单机数据库

一 命令下发的实现

  redis.c里,大家能看到redisCommandTable[] 的实现,列出了支持的所有命令。大部分的入参为redisClient *c,当一条REDIS命令下发,调用流程如下

技术分享

在createClient里会组装下传的client,其中就会调用selectDb()来选择数据库,而数据库中存储了一个字典结构dict *dict,这个dict里的键就是执行REDIS命令的键,值即redis对象robj。

 redisDb里的结构如下,下图已经是个抽象的图,比如HashObject,理论上应该有个redisObjct的结构,然后ptr指到一个dict的结构,然后才到一个个的entry等:

技术分享

 那么所有的对DB的读、新增、更新,都是现在redisDb.dict里找/新增 键值(对象的键值)(比如上图的book),然后更新dict里对应键的那个值(robj,比如HashObject)里的内容(比如name,author或者publisher)。

[redis读书笔记] 第二部分 单机数据库