
memcached源码分析
文章平均质量分 84
关于memcached 1.4.21版本的一些源码分析
luotuo44
这个作者很懒,什么都没留下…
展开
-
memcached源码分析-----set命令处理流程
转载请注明出处: 前一篇博文以get命令为例子把整个处理流程简单讲述了一遍,本篇博文将以set命令详细讲述memcached的处理流程。具体的命令为“set tt 3 0 10”,并假设当然memcached服务器没有名为tt的item。读取命令: 在前一篇博文的最后,conn的状态被设置为conn_new_cmd,回原创 2015-03-13 09:28:44 · 3902 阅读 · 1 评论 -
memcached源码分析-----get命令处理流程
转载请注明出处: 本文以get命令为例子,探讨memcached是如何处理命令的。本文只是探讨memcached处理命令的工作流程,具体的代码细节在不影响阅读的前提下能省略的就省略、能取默认值就取默认值、内存是足够的(不需要动态申请空间就够用了)。涉及到数组、缓存区的就假设已经分配好了。 现在假定memcached里面有了一个键值原创 2015-03-12 09:44:10 · 3621 阅读 · 1 评论 -
memcached源码分析-----slab automove和slab rebalance
转载请注明出处:需求: 考虑这样的一个情景:在一开始,由于业务原因向memcached存储大量长度为1KB的数据,也就是说memcached服务器进程里面有很多大小为1KB的item。现在由于业务调整需要存储大量10KB的数据,并且很少使用1KB的那些数据了。由于数据越来越多,内存开始吃紧。大小为10KB的那些item频繁访问,并且由于内存不够原创 2015-01-22 09:56:35 · 4406 阅读 · 4 评论 -
memcached源码分析-----item过期失效处理以及LRU爬虫
转载请注明出处: 温馨提示:本文用到了一些可以在启动memcached设置的全局变量。关于这些全局变量的含义可以参考《memcached启动参数详解》。对于这些全局变量,处理方式就像《如何阅读memcached源代码》所说的那样直接取其默认值。过期失效处理: 一个item在两种情况下会过期失效:1.item的exptime原创 2015-01-21 09:46:41 · 5799 阅读 · 4 评论 -
memcached源码分析-----item锁级别与item引用计数
转载请注明出处:锁级别: 从前面的《扩展哈希表》知道:哈希表进行扩展时,有一个专门的线程负责将item数据从旧哈希表迁移到新哈希表(由此,也称这个线程为迁移线程)。此外,还有一些worker线程会时不时访问item(包括插入、删除和获取)。这些线程的对item所做的操作基本上都是互斥的,必须加锁控制。 如果只使用一个锁,抢到该锁才能使原创 2015-01-20 09:52:41 · 3454 阅读 · 1 评论 -
memcached源码分析-----LRU队列与item结构体
转载请注明出处:LRU队列: 之前的《slab内存分配》博文已经说到一个slab class里面的所有slab分配器都只分配相同大小的item,不同的slab class分配不同大小的item。item结构体里面有一个slabs_clsid成员,用来指明自己是属于哪个slab class的。这里把slabs_clsid值相同的item称为是同一类ite原创 2015-01-19 09:46:49 · 6140 阅读 · 0 评论 -
memcached源码分析-----哈希表基本操作以及扩容过程
转载请注明出处: 温馨提示:本文用到了一些可以在启动memcached设置的全局变量。关于这些全局变量的含义可以参考《memcached启动参数详解》。对于这些全局变量,处理方式就像《如何阅读memcached源代码》所说的那样直接取其默认值。 assoc.c文件里面的代码是构造一个哈希表。memcached快的一个原因是使用了哈希表。现在就原创 2015-01-16 10:14:25 · 7663 阅读 · 5 评论 -
memcached源码分析-----slab内存分配器
转载请注明出处: 温馨提示:本文用到了一些可以在启动memcached设置的全局变量。关于这些全局变量的含义可以参考《memcached启动参数详解》。对于这些全局变量,处理方式就像《如何阅读memcached源代码》所说的那样直接取其默认值。slab内存池分配器:slab简介: memcached使用了一个叫slab的内原创 2015-01-15 10:16:57 · 7145 阅读 · 2 评论 -
memcached源码分析-----网络模型
转载请注明出处:半同步/半异步: memcached使用半同步/半异步网络模型处理客户端的连接和通信。 半同步/半异步模型的基础设施:主线程创建多个子线程(这些子线程也称为worker线程),每一个线程都维持自己的事件循环,即每个线程都有自己的epoll,并且都会调用epoll_wait函数进入事件监听状态。每一个worker线程(子线程)和原创 2015-01-14 09:59:20 · 7215 阅读 · 8 评论 -
memcached源码分析-----memcached启动参数详解以及关键配置的默认值
本文将给出memcached启动时各个参数的详细解释以及一些关键配置的默认值。以便在分析memcached源码的时候好随时查看。当然也方便使用memcached时可以随时查看各个参数的含义。《如何阅读memcached源码》说到memcached有很多全局变量(也就是关键配置),这些全局变量会给原创 2015-01-13 10:37:00 · 8193 阅读 · 0 评论 -
memcached源码分析-----安装、调试以及如何阅读memcached源码
转载请注明出处:安装: 安装memcached之前要先安装Libevent。现在假定Libevent安装在/usr/local/libevent目录了。 因为memcached安装后不像Libevent那样,有一堆头文件和库文件。安装后的memcached不是用来编程而直接用来运行的。所以不需要在/usr/local目录下专门为memcach原创 2015-01-12 10:39:42 · 5596 阅读 · 2 评论