
redis设计与实现
anderOne
java后台攻城狮一枚
展开
-
跳跃表(redis版本3.0)
跳跃表跳跃表(skiplist)是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的。跳跃表支持平均 O(\log N) 最坏 O(N) 复杂度的节点查找, 还可以通过顺序性操作来批量处理节点。在大部分情况下, 跳跃表的效率可以和平衡树相媲美, 并且因为跳跃表的实现比平衡树要来得更为简单, 所以有不少程序都使用跳跃表来代替平衡树。Redis 使用...原创 2020-04-15 16:10:14 · 193 阅读 · 0 评论 -
字典(redis版本3.0)
Redis 的字典使用哈希表作为底层实现, 一个哈希表里面可以有多个哈希表节点, 而每个哈希表节点就保存了字典中的一个键值对。哈希表typedef struct dictht { // 哈希表数组 dictEntry **table; // 哈希表大小 unsigned long size; // 哈希表大小掩码,用于计算索引值 // 总是...原创 2020-04-15 16:10:29 · 169 阅读 · 0 评论 -
链表(redis版本3.0)
链表在 Redis 中的应用非常广泛, 比如列表键的底层实现之一就是链表: 当一个列表键包含了数量比较多的元素, 又或者列表中包含的元素都是比较长的字符串时, Redis 就会使用链表作为列表键的底层实现。除了链表键之外, 发布与订阅、慢查询、监视器等功能也用到了链表, Redis 服务器本身还使用链表来保存多个客户端的状态信息, 以及使用链表来构建客户端输出缓冲区(output buffer)...原创 2020-04-15 16:10:41 · 177 阅读 · 0 评论 -
简单动态字符串(redis版本3.0)
redis字符串类型SDSSDS (Simple Dynamic String,简单动态字符串)是 Redis 底层所使用的字符串表示,作为redis默认的字符串表示。除此之外,传统 C 字符串在redis内部也会使用,但是用处少,通常用于一些字符串无需修改的地方,例如打印日志。SDS结构struct sdshdr { // buf 已占用长度 int len; //...原创 2020-04-15 16:10:54 · 182 阅读 · 0 评论