![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
爱很遥远
事有其道
展开
-
Redis源码分析——SDS
Redis中基于C字符串构建了一种新的简单动态字符串SDS,作为对象的一种底层实现方式。它保存了C风格字符串以’\0’结尾的惯例,可以使用C字符串函数。由于SDS中保存了字符串的长度,所以可以以O(1)的时间复杂度获取长度而不是C字符串的O(n)。C字符串容易溢出的缺点也改进掉了,因为SDS操作时如果空间不够,会重新分配空间。对于空间的管理,SDS中使用预分配和懒惰释放的方式,减少对内存空间的反复原创 2016-04-24 22:59:07 · 439 阅读 · 1 评论 -
Redis源码分析——链表
Redis自己实现了一个双向链表,作为对象的底层实现之一。它有头结点和尾节点和长度,方便操作。而且支持多态,链表中复制函数、释放函数、匹配函数都是函数指针的方式,允许用户赋值。/* adlist.h - A generic doubly linked list implementation * * Copyright (c) 2006-2012, Salvatore Sanfilippo原创 2016-04-24 23:27:30 · 261 阅读 · 0 评论