redis数据结构
_Madrid
华而无实
展开
-
sds-1
sds结构-1数据结构这里比较有意思的是GNU C的零长度数组,sizeof(char buf[0]) == 0, 关于这篇内容的C语言技巧改日写一篇文章阐述struct __attribute__ ((__packed__)) sdshdr8 { uint8_t len; /* used */ uint8_t alloc; /* excluding the header a...原创 2018-10-15 23:53:39 · 392 阅读 · 0 评论 -
sds
文章目录sds结构数据结构宏解析函数解析sdslen最基本的创建函数最基本的追加扩容机制sds结构数据结构这里比较有意思的是GNU C的零长度数组 sizeof(char buf[0]) == 0关于这篇内容的C语言技巧改日写一篇文章阐述struct __attribute__ ((__packed__)) sdshdr8 { uint8_t len; /* used *...原创 2018-10-17 19:59:31 · 842 阅读 · 0 评论 -
redis-adlist
文章目录adlist1 数据结构1.1 节点的表示1.2 迭代单元1.3 链表2 宏解析3 函数3.1 创建3.1.1 listCreate3.2 增加3.2.1 头插法3.2.2 尾插法3.2.3 节点前后法3.3 删除3.3.1 删除单个节点3.3.2 删除所有节点3.4 更改3.4.1 旋转链表3.4.2 合并链表3.5 查询3.5.1 获取索引节点3.5.2 判断节点存在3.6 释放3.6...原创 2019-01-07 12:31:18 · 373 阅读 · 0 评论 -
redis-dict上
文章目录哈希表哈希函数作用特点结构节点哈希表字典总结问题dictIteratorAPI创建类函数_dictResetdictCreatedictInit查找类操作dictFind增加类操作dictAddRawdictReplace关于作者哈希表花哨的算法比简单算法更容易出 bug、更难实现。尽量使用简单的算法配合简单的数据结构。只要掌握了数据结构中的四大法宝,就可以包打天下,他们是:arr...原创 2019-01-07 12:34:03 · 184 阅读 · 0 评论 -
redis-dict中
文章目录dict解决哈希冲突为什么出现哈希碰撞解决方法rehash为什么要rehash什么时候需要rehashredis的rehash渐进rehash使用两个哈希表定时rehash优化函数创建总结关于作者dict 今天是哈希表的中篇,花了很大的篇幅来描述哈希表,足以证明这个结构的重要性了。redis就是基于哈希的一个设计,而且如今的分布式都和哈希有着密切的关系。redis的数据结构部分结束后...原创 2019-01-07 12:35:40 · 442 阅读 · 0 评论 -
redis-dict下
文章目录dict函数添加dictAdddictAddRow查找_dictKeyIndexdictAddOrFinddictFinddictFetchValue删除更改释放关于作者dict 终于到了哈希表的最后一篇了,终于又到了源码部分了。只要理解了前两篇的原理部分,那么源码解读其实就是把原理转换成代码的过程。也可以说是对我们阐述的原理的验证。废话不说,直接干。函数所有的数据结构都是围绕增...原创 2019-01-07 12:37:23 · 292 阅读 · 0 评论 -
redis-intset
文章目录intset结构源码预备知识判断整数编码类型根据类型获得pos位置的元素设置函数查询函数升级函数移动函数添加函数移除函数总结关于作者intset整数集合,是有序存储的,且不包含重复的元素。结构typedef struct intset { uint32_t encoding; uint32_t length; int8_t contents[];} int...原创 2019-01-07 12:38:51 · 262 阅读 · 0 评论