随笔分类 - Redis设计与实现
摘要:跳跃表(skiplist)是一种有序数据结构,通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。 在大部分情况下,跳跃表的效率可以和平衡树媲美,并且因为跳跃表的实现比平衡树要来的简单
阅读全文
摘要:字典,又称为符号表(symbol table)、关联数组(associative array)或映射(map),是一种用于保存键值对的抽象数据结构。 在字典中,一个键(key)和一个值(value)进行关联(将键映射为值),这些关联的键和值就称为键值对。字典中的每个键都是独一无二的。 字典在Redi
阅读全文
摘要:链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。链表在Redis中的应用十分广泛,如列表键的底层实现之一就是链表。当一个列表键包含了数量较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis就会使用链表作为列表键的底层实现。 如下所示:
阅读全文
摘要:Redis自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。 在Redis中,C字符串只会作为字符串字面量(string literal)用在一些无须对字符串进行修改的地方,如打印日志。 redisLog(RE
阅读全文