首页 > 代码库 > memcache assoc
memcache assoc
关键数据结构
/* 主哈希表 */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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。