摘要:
跳跃表 在每个节点维持多个指向其他节点的指针,达到快速访问节点的目的。Redis使用跳跃表作为有序集合键的底层实现之一。 5.1 跳跃表的实现 redis.h/zskiplistNode表示跳跃表节点。redis.h/zskiplist保存跳跃表节点的相关信息:节点数量、指向表头表尾节点的指针等。 阅读全文
摘要:
在字典中,一个键(key)可以和一个值(value)进行关联(或者说将键映射为值),这些关联的键和值就称为键值对。 4.1 字典的实现 Redis的字段使用哈希表作为底层实现。 4.1.1 哈希表 typedef struct ditch{ //哈希表数组 dictEntry **table; // 阅读全文
摘要:
链表提供了高效的节点重排,顺序性节点访问,并可以通过增删节点灵活调整链表的长度。链表是双向无环的。 3.1 链表和链表节点的实现 1. 节点 typedef struct listNode{ //前置节点 struct listNode *prev; //后置节点 struct listNode * 阅读全文
摘要:
在redis中,默认字符串的表示类型是SDS(简单动态字符串),C语言传统的字符串表示只在很少的情况下用到。 2.1 SDS的定义 SDS结构: char buf[];用于保存字符串,会在字符串结尾自动添加一个空字符,遵循C字符串结尾的惯例,即用N+1字符串数组表示长度为N的字符串 unsigned 阅读全文