Memcached源码分析
Memcached 1.4.15源码分析,源码分析涉及内存管理,线程管理,网络通信和一些操作的具体流程。
lcli
这个作者很懒,什么都没留下…
展开
-
Memcached源码分析之资源分享
这次的Memcached源码分享总共写了20篇文章,主要是记录自己看源码的一个过程,因为我们大脑不靠谱。在看源码过程中,已有的一些文章帮助很大,在学习了很多人的文章之后,自己分析源码,过程才没那么痛苦,下面就把我认为好的文章分享出来,这些文章涵盖了Memcached的各个方面,大家在学习Memcached的过程中可以参考。Facebook对memcached的提升Memcached源码分析...原创 2014-03-26 13:18:57 · 9638 阅读 · 1 评论 -
Memcached源码解析之cas属性
cas即compare and set或者compare and swap,是实现乐观锁的一种技术,乐观锁是相对悲观锁来说的,所谓悲观锁是在数据处理过程中,完全锁定,这种能完全保证数据的一致性,但在多线程情况下,并发性能差,通常是使用各种锁技术实现;而乐观锁是通过版本号机制来实现数据一致性,过程中会使用CPU提供的原子操作指令,乐观锁能提高系统的并发性能,Memcached使用cas是保证数据的一致性,不是严格为了实现锁。Memcached是多客户端应用,在多个客户端修改同一个数据时,会出现相互覆盖的情况原创 2014-03-26 12:52:54 · 3415 阅读 · 0 评论 -
Memcached源码分析之内存池
Memcached内部维护了一个内存池来减少频繁的malloc和free,在该内存池的基础上面实现了slab内存管理,下面简单介绍下内存池的实现,大家在实现类似结构时,可以做个参考。原创 2014-03-25 21:44:48 · 3971 阅读 · 0 评论 -
Memcached源码解析之连接队列
Memcached中Master线程和Worker线程之间通信连接信息时,是通过连接队列来通信的,即Master线程投递一个消息到Worker线程的连接队列中,Worker线程从连接队列中读取链接信息来执行连接操作,空闲链表类似于一种连接池的实现,服务器开发中经常需要各种池操作,大家在实现类似池时,可以做参考。原创 2014-03-25 21:28:09 · 3415 阅读 · 0 评论 -
Memcached源码分析之Hash表操作
Memcached的Hash表用来提高数据访问性能,通过链接法来解决Hash冲突,当Hash表中数据多余Hash表容量的1.5倍时,Hash表就会扩容,Memcached的Hash表操作没什么特别的,我们这里简单介绍下Memcached里面的Hash表操作。原创 2014-03-25 20:55:37 · 3168 阅读 · 0 评论 -
Memcached源码分析之LRU操作
LRU是最近最少使用的简称,该技术经常用来实现cache数据更新,Memcached使用LRU技术来淘汰老的数据,Memcached默认是启用LRU操作的,在这种情况下所有的set操作都会成功,如果Memcached的内存池已经使用完,则会淘汰老数据来存放新数据,如果关闭了Memcached的LRU,则当Memcached没有多余的内存空间时,Memcached之间返回错误。原创 2014-03-25 20:41:43 · 3599 阅读 · 0 评论 -
Memcached源码分析之set操作
Memcached的set操作内部流程分析。原创 2014-03-25 19:22:29 · 3170 阅读 · 0 评论 -
Memcached源码分析之do_item_alloc操作
前面我们分析了Memcached的set操作,其set操作在经过所有的数据有效性检查之后,如果需要存储item,则会执行item的实际存储操作,我们下面分析下其过程。//执行item的存储操作,该操作会将item挂载到LRU表和slabcalss中item *do_item_alloc(char *key, const size_t nkey, const int flags,原创 2014-03-25 19:54:39 · 3008 阅读 · 0 评论 -
Memcached源码阅读之初始化参数解析
Memcached源码分析之初始化启动参数解析,了解这些参数,才能配置出最高效的memcached.原创 2014-03-19 10:51:51 · 3731 阅读 · 0 评论 -
Memcached源码阅读之网络监听的建立
Memcached网络监听的建立,Memcached作为服务器,代码具有很好的参考性,可以直接复用。原创 2014-03-20 14:54:26 · 3785 阅读 · 0 评论 -
Memcached源码分析之网络连接建立
这篇博客主要分析TCP的连接建立,该连接的建立过程也就是添加网络描述符到libevent事件中,这个过程是由主线程(main)驱动的。原创 2014-03-20 19:11:19 · 3102 阅读 · 0 评论 -
Memcached源码阅读之内存初始化
Memcached内存初始化原创 2014-03-20 21:12:10 · 2582 阅读 · 0 评论 -
Memcached源码阅读之线程交互
Memcached线程间连接分发原创 2014-03-23 16:50:51 · 3056 阅读 · 0 评论 -
Memcached源码分析之状态机(二)
Memcached业务状态机,读取(TCP和UDP)网络数据,看看memcached怎么使用网络缓冲区读取TCP数据。原创 2014-03-24 13:29:17 · 2985 阅读 · 1 评论 -
Memcached源码分析之状态机(三)
Memcached协议分析之业务状态机原创 2014-03-24 19:10:11 · 2799 阅读 · 0 评论 -
Memcached源码阅读之资源初始化
Memcachedhash表,各种统计信息,工作线程,内存结构的初始化流程。原创 2014-03-19 13:36:53 · 3198 阅读 · 1 评论 -
Memcached源码分析之状态机(一)
Memcached业务处理状态机原创 2014-03-23 17:55:44 · 3931 阅读 · 0 评论 -
Memcached源码分析之item结构
Memcached的内存结构,Memcached使用了slab内存池技术,自行管理内存,提高了内存的使用率,减少了内存碎片。原创 2014-03-24 20:48:21 · 3201 阅读 · 0 评论 -
Memcached源码分析之Hash表扩容
Hash表是Memcached里面最重要的结构之一,其采用链接法来处理Hash冲突,当Hash表中的项太多时,也就是Hash冲突比较高的时候,Hash表的遍历就脱变成单链表,此时为了提供Hash的性能,Hash表需要扩容,Memcached的扩容条件是当表中元素个数超过Hash容量的1.5倍时就进行扩容,扩容过程中会采用2个Hash表,将老表中的数据通过Hash算法映射到新表中,每次移动的桶的数目可以配置,默认是每次移动老表中的1个桶。原创 2014-03-24 19:44:39 · 3085 阅读 · 0 评论 -
Memcached源码阅读之get过程
Memcached的get操作在读取数据时,会判断数据的有效性,如果数据已经过期,直接删除(不是删除内存空间,而只是释放数据所占用的内存空间),这样不用额外的去处理过期数据,操作简单。原创 2014-03-24 21:09:59 · 3276 阅读 · 0 评论 -
Memcached源码阅读之服务器资源调整
Memcached源码阅读之服务器资源调整原创 2014-03-18 20:03:49 · 5693 阅读 · 1 评论