SDS SDS是Redis中String的底层数据结构,数据结构如下,SDS保留了传统的C字符串表达方式即数组的最后一个元素是'/0'结尾.此外还添加了两个字段len和free,其中len表示字符串长度,free代表空闲空间. class sds { int len; int free; char[] buf; } 那么这两个添加的元素有什么作用呢? 常数复杂度获取字符长度.首先第一点就是C数组是不记录长度的,那么为了获取字符串的长度每次就得遍历数组内的全部元素,这无疑会增加时间损耗,有了len…
最大感受,无论从设计还是源码,Redis都尽量做到简单,其中运用到的原理也通俗易懂.特别是源码,简洁易读,真正做到clean and clear, 这篇文章以unstable分支的源码为基准,先从大体上整理Redis的对象类型以及底层编码. 当我们在本文中提到Redis的“数据结构”,可能是在两个不同的层面来讨论它. 第一个层面,是从使用者的角度,string,list,hash,set,sorted set 第二个层面,是从内部实现的角度,属于更底层的实现, ht(dict),raw,em…