![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 86
以源码为线索,逐步深入Redis开发各个环节,掌握Redis常用性能体验优化思路,打造完整模块流,提升工程化编码能力和思维能力
Bender_ydc
Talk is cheap. Show me the code.
展开
-
Redis源码分析(四)字典-dict
概述Redis中的dict字典可以理解为key和value映射关系的升级版本的散列链表。dict字典的出现是为了解决算法中的查找问题,在实际开发中查找主要使两种结构体,他们分别是使用Map结构的树与Hash表。使用Hash表找到的优势是,在没有Hash碰撞的情况下,查找性能能达到O(1),并且它的内部实现也比较简单。dict字典借鉴了多个经典的算法实现Hash的key计算。dict字典在发生冲突时采用拉链法解决冲突,它的内部维护了两个hash表,当装载因子(节点数和字典大小之间的比率接近 1:1,且已使用原创 2021-11-08 16:36:51 · 285 阅读 · 8 评论 -
Redis源码分析(三)双向链表-adlist
Redis源码分析(三)双向链表-adlist)概述内存结构结构体内存图概述Redis中的list结构的数据结构是双向链表,双向链表也叫双链表,是链表的一种,每个数据结点中都有两个指针,分别指向直接后继和直接前驱。优点:从双向链表中的任意一个结点开始,都可以很方便地访问前驱结点和后继结点。缺点:相比较于单链表的删除、增加节点,操作略微复杂,而且在内存上,需要多分配一个指针存储空间。内存结构结构体可以看到typedef struct listNode { // 前置节点 st原创 2021-11-04 21:45:13 · 428 阅读 · 4 评论 -
Redis源码分析(一)内存池-zmalloc
Redis 源码分析(一)内存池-zmalloc概述新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入概述大家好,我是一名萌新,在文章分享有不正确的、语言比较晦涩的地方,欢迎大家明确提出来。本人经历:过去一年在某高校的J原创 2021-10-27 22:19:55 · 851 阅读 · 7 评论 -
Redis源码分析(二)动态字符串-sds
这里写目录标题概述概述面向过程的C语言没有可变长的字符串,而面向对象语言里,Java有的final String字符串,StringBuffer、StringBuilder可变长对象,C++中有std::string字节流对象。Redis在sds.c、sds.h文中实现了动态可变字符串。...原创 2021-11-01 12:51:40 · 406 阅读 · 6 评论