redis源码阅读
文章平均质量分 72
非自然码农
骐骥一跃,不能十步。
驽马十驾,可至千里。
展开
-
Redis_skiplist源码阅读与分析
跳跃表,是一种独特的数据结构,它依靠链表,实现了快速的插入,删除。又根据它独特的设计实现了平均O(logN)复杂度下的查询。并且它的结构相对红黑树来说十分简单。原创 2022-05-12 15:33:01 · 420 阅读 · 1 评论 -
Redis源码阅读
Redis源码阅读阅读Redis源码,参考资料:Redis 学习笔记(一)redis 数据类型和对象机制 - 归斯君 - 博客园 (cnblogs.com)redis中文文档工具: Source Insight一、Redis 简介#Redis 是(key-value)的 NoSQL 数据库,所有的 key 都是 String ,它的 value 可以是 String、hash、list、set、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等数据类原创 2022-05-05 14:36:04 · 100 阅读 · 0 评论 -
Redis源码阅读-内存分配模块
Redis源码阅读-内存分配模块Redis在内存分配方面,仅仅是对系统的malloc/free做了一层简单的封装,然后加上了异常处理功能和内存统计功能。其实现主要在zmalloc.c和zmalloc.h文件中。通过对比 redis3.0 和redis6.0,我也发现了一些,有趣的改进之处,不仅有根据C++11,加入了一些原子操作。更有考虑到用户,更多可能的输入后,加入的新操作。比如:6.0针对3.0,在realloc中加入了判断是否重新分配的内存为0,这一情况。这是3.0对于底层的分配器更新原创 2022-05-05 14:38:43 · 298 阅读 · 0 评论 -
redis源码阅读-dict字典
redis源码阅读-dict字典 字典是redis中应用非常广泛的一种抽象数据结构,字典是key-value映射关系,主要特点就是一一对应的关系。字典中的每个键都是独一无二的。 字典在redis中的应用有:数据库底层实现,哈希键的底层实现。dict的实现基本数据结构关于dict的数据结构一共有五个:dictEntry,dictType,dictht,dict,dictIterator.dictEntry是dict中基本元素类型。dictType则对外提供了几个自定义函数,供给使用者填充d原创 2022-05-05 14:42:38 · 997 阅读 · 0 评论 -
Redis源码阅读-list双向链表
Redis源码阅读-list双向链表 链表提供了高效的节点重排能力,以及顺序节点访问方式,并且节点的删除,增加都很灵活方便,但是Redis使用的C语言并不内置这种数据结构,所以Redis在adlist文件中实现了list,list在Redis中的应用非常广泛,如列表键,发布与订阅,慢查询,监视器等功能都用到了链表,Redis服务器本身也是用list来保存多个客户端的状态信息。链表的实现在adlist.h,adlist.c文件中。list本体的实现 可以看到list中定义了三个数据类型,节点类型li原创 2022-05-05 14:41:32 · 975 阅读 · 0 评论 -
Redis_SDS动态字符串源码阅读
Redis_SDS动态字符串源码阅读SDS其实就是C字符串,redis利用一些技巧,使其更快更好。那么SDS是怎么从char* 到SDS的,其实很巧妙:通过下面这三个步骤,一个void * sh,就变成了 指定类型的 SDS1.先声明几种SDS结构体的 类型,成员变量。2.通过宏定义,将sh 转变为 SDShdr 结构体的指针,并设置指针的头指向SDS结构体的头。3.在新建SDS的时候,使用结构体给sh指向的空间赋值。比起 C 字符串, SDS 具有以下优点:常数复杂度获取字符串长度。原创 2022-05-05 14:47:03 · 904 阅读 · 0 评论