redis 理解

1、字符串的数据结构有字段 free标志可用空间,len标志当前总长度(使得获取长度的算法为O(1)),buf指向实际字符串数组。这样只有当追加的字符串长度大于free了,才会进行空间再分配,再分配的原则是:

多分配一倍的、不大于1m的多余空间。这样追加N次长度,最多只会重新分配N次而不是一定分配N次。

2、链表的数据结构:head,tail两个指针,len是长度。head和tail中间的节点是双向的,但是是无环的。

3、字典的数据结构:一个type和privdata标志先不管,一个dictht数组,容量为2,指向两个dictht,就是两个hash表的数据结构,之所以有两个是为了rehash(相当于hashmap中的resize)的时候使用。

其中dictht的数据结构:table指针指向一个数组,size是表长度,sizemark掩码为size-1,used记录节点entry的数量

其中entry的数据结构:一个指针指向key;有一个union指向一个对象,对象中有指针指向value,还有一些int64的标志;还有一个指针next指向下个节点

4、

猜你喜欢

转载自www.cnblogs.com/chuliang/p/11874361.html