首页 > 系统服务 > 详细

memcache assoc

时间:2014-11-13 16:33:16      阅读:211      评论:0      收藏:0      [点我收藏+]

 

关键数据结构

/* 主哈希表 */
static item** primary_hashtable = 0;

/* 哈希表扩容的前期表,存储还没来得及移动到主哈希表的key */
static item** old_hashtable = 0;

/* 哈希表中的item数 */
static int hash_items = 0;

/* Flag: Are we in the middle of expanding now? */
static int expanding = 0;

/*
 * 扩容迁移以bucket为单位,this is how
 * far we‘ve gotten so far. Ranges from 0 .. hashsize(hashpower - 1) - 1.
 */
static int expand_bucket = 0;

1 assoc_expand

扩容

哈希扩容:哈希表扩容的到2hashpower+1

状态标识:expanding 置为1,标识正在扩容

哈希搬家:old_hashtable = primary_hashtable;

2 assoc_find

查找

关注expanding判断在old_hashtable还是primary_hashtable

3 assoc_delete

删除

_hashitem_before 获取删除之前的位置

4 assoc_insert

插入

find一把,保证不冲突

算出哈希key

Expanding 则插入odl_hashtable,否则primary里边

! expanding && hash_items > (hashsize(hashpower) * 3) / 2 扩容

memcache assoc

原文:http://www.cnblogs.com/stevinwang/p/4095098.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!