Memcached源码分析之Hash表操作
来源:互联网 发布:西南交大网络教学学费 编辑:程序博客网 时间:2024/06/10 08:37
Memcached的Hash表用来提高数据访问性能,通过链接法来解决Hash冲突,当Hash表中数据多余Hash表容量的1.5倍时,Hash表就会扩容,Memcached的Hash表操作没什么特别的,我们这里简单介绍下Memcached里面的Hash表操作。
//hash表插入元素int assoc_insert(item *it, const uint32_t hv) { unsigned int oldbucket; if (expanding && (oldbucket = (hv & hashmask(hashpower - 1))) >= expand_bucket)//如果已经开始扩容,且扩容的桶编号大于目前的item所在桶的编号 { it->h_next = old_hashtable[oldbucket];//这里是类似单链表的,按单链表的操作进行插入 old_hashtable[oldbucket] = it; } else {//已经扩容,则按新的Hash规则进行路由 it->h_next = primary_hashtable[hv & hashmask(hashpower)];//这里在新的Hash表中执行单链表插入 primary_hashtable[hv & hashmask(hashpower)] = it; } hash_items++;//元素个数+1 if (! expanding && hash_items > (hashsize(hashpower) * 3) / 2) {//开始扩容 assoc_start_expand();//唤醒扩容条件变量 } MEMCACHED_ASSOC_INSERT(ITEM_key(it), it->nkey, hash_items); return 1;}//hash表删除元素void assoc_delete(const char *key, const size_t nkey, const uint32_t hv) { item **before = _hashitem_before(key, nkey, hv);//获得item对应的桶的前一个元素 if (*before) { item *nxt; hash_items--;//元素个数-1 MEMCACHED_ASSOC_DELETE(key, nkey, hash_items); nxt = (*before)->h_next;//执行单链表的删除操作 (*before)->h_next = 0; *before = nxt; return; } assert(*before != 0);}像Hash表的扩容,初始化等已经在其他博客中介绍过了,这里就不在阐述。
0 0
- Memcached源码分析之Hash表操作
- Memcached源码分析之Hash表扩容
- Memcached源码分析之set操作
- Memcached源码分析之do_item_alloc操作
- Memcached源码分析之LRU操作
- Memcached源码分析:内容包括get过程、set操作、LRU操作、Hash表操作、连接队列等
- Memcached源码分析 - Memcached源码分析之增删改查操作(5)
- memcached源码分析之hashtable
- memcached源码分析之hashtable
- Memcached源码分析之二
- Memcached源码分析之三
- memcached源码分析之四
- Memcached源码分析 - Memcached源码分析之HashTable(4)
- 源码分析Memcached-Java-Client一致性hash算法
- Memcached源码分析(二)-jenkins hash函数
- memcached源码分析之线程模型
- memcached源码分析之线程池机制
- memcached源码分析之线程模型 【转】
- hdu 1198 Farm Irrigation(并查集)
- nodejs之express 从零开始
- unity3d]unity中几个系统自带的函数的执行顺序
- Java中StringBuffer类append方法的使用
- Android必备java知识点
- Memcached源码分析之Hash表操作
- 给定三角形的三边长,求三角形的面积
- 再谈我是怎么招聘程序员的
- Quartz定时任务在Spring MVC 中的实现
- longest
- oracle联机热备份的原理
- Game AI resources
- [ACM] hdu 1398 Square Coins (母函数)
- Log4J基础详解及示例大全