码迷,mamicode.com
首页 > 其他好文 > 详细

redis 理解

时间:2019-11-16 23:39:21      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:字符串   dict   res   map   ict   使用   union   ble   sed   

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、

redis 理解

标签:字符串   dict   res   map   ict   使用   union   ble   sed   

原文地址:https://www.cnblogs.com/chuliang/p/11874361.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!