E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
memcached源码分析
Memcached源码分析
-网络模型(1)
文章目录1网络模型2工作原理2.1libevent介绍2.2网络请求流程2.2.1流程图2.2.2主线程工作流程分析2.2.3工作线程工作流程分析3源码分析3.1源码地址3.2主线程源码分析3.3工作线程源码分析1网络模型Memcached采用了,单进程多线程的工作方式,同时采用了libevent事件驱动进行网络请求的处理。2工作原理2.1libevent介绍libevent是一个事件驱动库,详细
CleverCode
·
2018-09-25 18:31
memcached
(番外篇)spy
memcached源码分析
memcached是款优秀的分布式缓存工具。spymemcached的底层实现NIO.从众多招聘网站,看出NIO是众多公司的硬性要求了。研究下spymemcached源码,对开发工程师提高自身NIO功底是非常不错的实践。1.剖析MemcachedConnection对象1.1类图MemcachedConnection-是spymemcached的核心组件,表示到多台mc节点的连接。本身是个线程对象
randy_shandong
·
2016-08-18 17:10
spymemcached
分布式架构演练
Memcached源码分析
3
Memcached源码分析
之内存池Memcached内部维护了一个内存池来减少频繁的malloc和free,在该内存池的基础上面实现了slab内存管理,下面简单介绍下内存池的实现,大家在实现类似结构时,
a809146548
·
2016-05-15 16:00
C++
源码
memcached
C++11
Memcached源码分析
2
Memcached源码分析
之do_item_alloc操作前面我们分析了Memcached的set操作,其set操作在经过所有的数据有效性检查之后,如果需要存储item,则会执行item的实际存储操作,
a809146548
·
2016-05-15 16:00
C++
源码
memcached
C++11
Memcached源码分析
Memcached源码分析
之Hash表扩容Hash表是Memcached里面最重要的结构之一,其采用链接法来处理Hash冲突,当Hash表中的项太多时,也就是Hash冲突比较高的时候,Hash表的遍历就脱变成单链表
a809146548
·
2016-05-15 16:00
C++
源码
memcached
C++11
Memcached源码阅读
Memcached源码阅读之服务器资源调整本篇博客作为
Memcached源码分析
的开篇,这次阅读的源码版本为:1.4.15,开源软件各个版本之间差异比较大,同学们学习时,记得核对版本。
a809146548
·
2016-05-15 16:00
C++
memcached
服务器
C++11
memcached源码分析
之线程池机制(二)
在上一篇中已分析了memcached线程池的创建流程,由于上篇篇幅较长,因此将memcached线程池中线程的调度流程另立一篇。 先让我们把目光转到主函数中,主线程在调用thread_init函数创建好线程池后,就开始创建监听套接字,memcached支持TCP,UDP,UNIX域套接字,因此相应的要创建三种监听套接字 这里我们只分析TCP listeni
·
2015-11-13 17:46
memcached
memcached源码分析
之线程池机制(一)
已经个把月没有写长篇博文了,最近抽了点时间,将
memcached源码分析
系列文章的线程机制篇给整出来,在分析源码的过程中参考了网上的一些资源。
·
2015-11-13 17:45
memcached
memcached源码分析
item过期失效处理
原文地址:http://www.faceye.net/search/142629.html 过期失效处理: 一个item在两种情况下会过期失效:1.item的exptime时间戳到了。2.用户使用flush_all命令将全部item变成过期失效的。读者可能会说touch命令也可以使得一个item过期失效
·
2015-11-13 01:01
memcached
Memcached源码分析
(线程模型)
(转载) http://bachmozart.iteye.com/blog/344172 目前网上关于memcached的分析主要是内存管理部分,下面对memcached的线程模型做下简单分析 有不对的地方还请大家指正,对memcahced和libevent不熟悉的请先google之 先看下memcahced启动时线程处理的流程 memcached的多线程主要是通过实例化多个libe
·
2015-11-11 01:37
memcached
Memcached源码阅读之服务器资源调整
本篇博客作为
Memcached源码分析
的开篇,这次阅读的源码版本为:1.4.15,开源软件各个版本之间差异比较大,同学们学习时,记得核对版本。
qq_15457239
·
2015-09-18 16:00
memcached源码分析
之四
还是从Memcached.c文件的main函数开始,逐步分析Memcached的实现if(!sanitycheck()){ returnEX_OSERR; }staticboolsanitycheck(void){ /*Oneofourbiggestproblemsisoldandboguslibevents*/ constchar*ever=event_get_version();//获取lib
chinabhlt
·
2015-08-06 11:00
memcached
状态机设计模式理解
3.状态机模式实例篇:
Memcached源码分析
之请求处理(状态机)http://www.oschina.net/question/1441503_194178
findaway123
·
2015-06-09 21:00
Memcached源码分析
-
Memcached源码分析
之总结篇(8)
文章列表:《
Memcached源码分析
-
Memcached源码分析
之基于Libevent的网络模型(1)》《
Memcached源码分析
-
Memcached源码分析
之命令解析(2)》《
Memcached源码分析
initphp
·
2015-04-06 00:00
Memcached源码分析
-
Memcached源码分析
之存储机制Slabs(7)
文章列表:《
Memcached源码分析
-
Memcached源码分析
之基于Libevent的网络模型(1)》《
Memcached源码分析
-
Memcached源码分析
之命令解析(2)》《
Memcached源码分析
initphp
·
2015-04-05 16:00
spy
memcached源码分析
-2-Operation类分析
1.基本说明spymemcached中所有的操作都是封装到operation中进行处理,operation中注册回调,然后将operation放到一个operationFuture中,作为句柄返回;接收到结果后,通过回调函数修改句柄得到结果。2.Operation的创建spymemcached采用工厂模式,operation的创建也是通过OperationFactory工厂进行构建,以AsciiO
martji
·
2015-04-02 16:00
Memcached源码分析
-
Memcached源码分析
之LRU算法(6)
文章列表:《
Memcached源码分析
-
Memcached源码分析
之基于Libevent的网络模型(1)》《
Memcached源码分析
-
Memcached源码分析
之命令解析(2)》《
Memcached源码分析
initphp
·
2015-03-27 18:00
Memcached源码分析
-
Memcached源码分析
之增删改查操作(5)
文章列表:《
Memcached源码分析
-
Memcached源码分析
之基于Libevent的网络模型(1)》《
Memcached源码分析
-
Memcached源码分析
之命令解析(2)》《
Memcached源码分析
initphp
·
2015-03-25 20:00
Memcached源码分析
-
Memcached源码分析
之HashTable(4)
文章列表:《
Memcached源码分析
-
Memcached源码分析
之基于Libevent的网络模型(1)》《
Memcached源码分析
-
Memcached源码分析
之命令解析(2)》《
Memcached源码分析
initphp
·
2015-03-22 14:00
Memcached源码分析
-
Memcached源码分析
之消息回应(3)
文章列表:《
Memcached源码分析
-
Memcached源码分析
之基于Libevent的网络模型(1)》《
Memcached源码分析
-
Memcached源码分析
之命令解析(2)》《
Memcached源码分析
initphp
·
2015-03-18 21:00
memcached源码分析
-----set命令处理流程
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/44236591 前一篇博文以get命令为例子把整个处理流程简单讲述了一遍,本篇博文将以set命令详细讲述memcached的处理流程。具体的命令为“settt3010”,并假设当然memcached服务器没有名为tt的item。读取命令: 在前一篇博文的最后,con
luotuo44
·
2015-03-13 09:00
memcached
memcached源码分析
-----get命令处理流程
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/44217383 本文以get命令为例子,探讨memcached是如何处理命令的。本文只是探讨memcached处理命令的工作流程,具体的代码细节在不影响阅读的前提下能省略的就省略、能取默认值就取默认值、内存是足够的(不需要动态申请空间就够用了)。涉及到数组、缓存区的就假设
luotuo44
·
2015-03-12 09:00
memcached
Memcached源码分析
-
Memcached源码分析
之命令解析(2)
文章列表:《
Memcached源码分析
-
Memcached源码分析
之基于Libevent的网络模型(1)》《
Memcached源码分析
-
Memcached源码分析
之命令解析(2)》《
Memcached源码分析
initphp
·
2015-03-12 00:00
Memcached源码分析
-
Memcached源码分析
之基于Libevent的网络模型(1)
文章列表:《
Memcached源码分析
-
Memcached源码分析
之基于Libevent的网络模型(1)》《
Memcached源码分析
-
Memcached源码分析
之命令解析(2)》《
Memcached源码分析
initphp
·
2015-02-23 10:00
Memcached源码分析
——process_command函数解析
以下为个人笔记/** *process_command在memcached中是用来处理用户发送的命令的, *包括getset,add,delete,replace,stats,flush_all等常用的和不常用的命令,全在这进行处理的。 *一共有两个参数,conn*c和字符串指针char*command; *关于conn结构体就先不说了,反正它是整个memcached中最重要的结构体就行了
lrxing
·
2015-02-04 21:00
Memcached源码分析
——process_command函数解析
以下为个人笔记/** *process_command在memcached中是用来处理用户发送的命令的, *包括getset,add,delete,replace,stats,flush_all等常用的和不常用的命令,全在这进行处理的。 *一共有两个参数,conn*c和字符串指针char*command; *关于conn结构体就先不说了,反正它是整个memcached中最重要的结构体就行了
lrxing
·
2015-02-04 21:00
Memcached源码分析
——hash
以下为memcached中关于使用的hash算法的一点记录memcached中默认使用的是BobJenkins的jenkins_hash算法以下4段代码均在memcached-1.4.22/hash.h以下为hash函数的声明,hashfunc_type的定义,以及hash_init函数的声明/** *定义一个函数指针类型 */ typedefuint32_t(*hash_func)(con
lrxing
·
2015-02-04 21:00
Memcached源码分析
——hash
以下为memcached中关于使用的hash算法的一点记录memcached中默认使用的是BobJenkins的jenkins_hash算法以下4段代码均在memcached-1.4.22/hash.h以下为hash函数的声明,hashfunc_type的定义,以及hash_init函数的声明/** *定义一个函数指针类型 */ typedefuint32_t(*hash_func)(con
lrxing
·
2015-02-04 21:00
memcached源码分析
-----slab automove和slab rebalance
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/43015129需求: 考虑这样的一个情景:在一开始,由于业务原因向memcached存储大量长度为1KB的数据,也就是说memcached服务器进程里面有很多大小为1KB的item。现在由于业务调整需要存储大量10KB的数据,并且很少使用1KB的那些数据了。由于数据越来越多
luotuo44
·
2015-01-22 09:00
memcached
rebalance
automove
memcached源码分析
-----item过期失效处理以及LRU爬虫
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/42963793 温馨提示:本文用到了一些可以在启动memcached设置的全局变量。关于这些全局变量的含义可以参考《memcached启动参数详解》。对于这些全局变量,处理方式就像《如何阅读memcached源代码》所说的那样直接取其默认值。另外,本文会提及LRU队列,关
luotuo44
·
2015-01-21 09:00
memcached
LRU
item
memcached源码分析
-----item锁级别与item引用计数
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/42913549锁级别: 从前面的《扩展哈希表》知道:哈希表进行扩展时,有一个专门的线程负责将item数据从旧哈希表迁移到新哈希表(因此,也称这个线程为迁移线程)。此外,还有一些worker线程会时不时访问item(包括插入、删除和获取)。这些线程的对item所做的操作基本上
luotuo44
·
2015-01-20 09:00
memcached
item
锁级别
memcached源码分析
-----LRU队列与item结构体
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/42869325LRU队列:之前的《slab内存分配》博文已经写到:一个slabclass里面的所有slab分配器只分配相同大小的item,不同的slabclass分配不同大小的item。item结构体里面有一个slabs_clsid成员,用来指明自己是属于哪个slabclass的。这里把s
luotuo44
·
2015-01-19 09:49
memcached源码分析
memcached源码分析
memcached源码分析
-----LRU队列与item结构体
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/42869325LRU队列: 之前的《slab内存分配》博文已经写到:一个slabclass里面的所有slab分配器只分配相同大小的item,不同的slabclass分配不同大小的item。item结构体里面有一个slabs_clsid成员,用来指明自己是属于哪个slabc
luotuo44
·
2015-01-19 09:00
memcached
LRU
item
memcached源码分析
-----哈希表基本操作以及扩容过程
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/42773231温馨提示:本文用到了一些可以在启动memcached设置的全局变量。关于这些全局变量的含义可以参考《memcached启动参数详解》。对于这些全局变量,处理方式就像《如何阅读memcached源代码》所说的那样直接取其默认值。assoc.c文件里面的代码是构造一个哈希表。me
luotuo44
·
2015-01-16 10:25
memcached源码分析
memcached源码分析
memcached源码分析
-----哈希表基本操作以及扩容过程
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/42773231 温馨提示:本文用到了一些可以在启动memcached设置的全局变量。关于这些全局变量的含义可以参考《memcached启动参数详解》。对于这些全局变量,处理方式就像《如何阅读memcached源代码》所说的那样直接取其默认值。 assoc.c文件里
luotuo44
·
2015-01-16 10:00
memcached
哈希表
memcached源码分析
-----slab内存分配器
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/42737181 温馨提示:本文用到了一些可以在启动memcached设置的全局变量。关于这些全局变量的含义可以参考《memcached启动参数详解》。对于这些全局变量,处理方式就像《如何阅读memcached源代码》所说的那样直接取其默认值。slab内存池分配器:slab
luotuo44
·
2015-01-15 10:00
memcached
slab
memcached源码分析
-----网络模型
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/42705475accept/dispatch: memcached使用"主线程统一accept/dispatch子线程"网络模型处理客户端的连接和通信,也就是《UNIX网络编程卷1第三版》第30章里面的第8个模型。 "主线程统一accept/dispatch子线程"的
luotuo44
·
2015-01-14 09:00
memcached
半同步半反应堆
memcached源码分析
-----memcached启动参数详解以及关键配置的默认值
转载请注明出处: http://blog.csdn.net/luotuo44/article/details/42672913 本文开始本系列博文的代码分析。本系列博文研究的memcached版本是1.4.21。 本文将给出memcached启动时各个参数的详细解释以及一些关键配置的默认值。以便在分析memcached源码时可以随时查看。当然也方便使用memcached时
luotuo44
·
2015-01-13 10:00
参数
memcached
memcached源码分析
-----安装、调试以及如何阅读memcached源码
安装: 安装memcached之前要先安装Libevent。现在假定Libevent安装在/usr/local/libevent目录了。 因为memcached安装后不像Libevent那样,有一堆头文件和库文件。安装后的memcached不是用来编程而直接用来运行的。所以不需要在/usr/local目录下专门为memcached建立一个目录。直接把memcached安装到/us
aijuans
·
2015-01-12 13:00
memcached源码分析
memcached源码分析
-----安装、调试以及如何阅读memcached源码
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/42639131安装:安装memcached之前要先安装Libevent。现在假定Libevent安装在/usr/local/libevent目录了。因为memcached安装后不像Libevent那样,有一堆头文件和库文件。安装后的memcached不是用来编程而直接用来运行的。所以不需要
luotuo44
·
2015-01-12 10:42
memcached源码分析
memcached源码分析
memcached源码分析
-----安装、调试以及如何阅读memcached源码
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/42639131安装: 安装memcached之前要先安装Libevent。现在假定Libevent安装在/usr/local/libevent目录了。 因为memcached安装后不像Libevent那样,有一堆头文件和库文件。安装后的memcached不是用来编程
luotuo44
·
2015-01-12 10:00
源码
memcached
Memcached源码分析
(线程模型)
libevent不是多线程安全的,所以memcahced需要自己处理,自己实现http服务器的时候,按照多进程处理,应该比较简单,直接注册accept接受就可以了,即accept是原子的(猜测,需证实)。【修正:accept不是原子的,所以每产生一个可以被accept的连接,会有多个进程或线程被唤醒,但是因为共享一个inode,所以只有一个可以成功accept,其余的返回的fd小于0,可以根据错误
onmyway_1985
·
2014-08-16 06:00
memcached
Memcached源码分析
——内存管理
注:这篇内容极其混乱推荐学习这篇博客。博客的地址:http://kenby.iteye.com/blog/1423989基本元素itemitem是Memcached中记录存储的基本单元,用户向memcached写入的keyvalue键值对信息都以item的形式存入Memcached中。 item基本结构首先用一张图来描述item的基本结构:图1-1item的基本机构图片来自博客,画的非常的清晰。从
诶露基基(LGG)
·
2014-04-21 22:00
Memcached源码分析
之资源分享
Facebook对memcached的提升
Memcached源码分析
之内存管
u013702678
·
2014-03-26 13:00
memcached
memcached源码分析
Memcached源码分析
之内存池
Memcached内部维护了一个内存池来减少频繁的malloc和free,在该内存池的基础上面实现了slab内存管理,下面简单介绍下内存池的实现,大家在实现类似结构时,可以做个参考。staticvoid*mem_base=NULL;//mem_base指向新申请的内存空间,指向整个内存空间的头部 staticvoid*mem_current=NULL;//指向已经分配过的空间,且指向已经分配了空间
u013702678
·
2014-03-25 21:00
memcached
memcached源码分析
memcached内存池
Memcached源码分析
之Hash表操作
Memcached的Hash表用来提高数据访问性能,通过链接法来解决Hash冲突,当Hash表中数据多余Hash表容量的1.5倍时,Hash表就会扩容,Memcached的Hash表操作没什么特别的,我们这里简单介绍下Memcached里面的Hash表操作。//hash表插入元素 intassoc_insert(item*it,constuint32_thv){ unsignedintoldbu
u013702678
·
2014-03-25 20:00
memcached
memcached源码分析
memcached的Hash表
Memcached源码分析
之LRU操作
LRU是最近最少使用的简称,该技术经常用来实现cache数据更新,Memcached使用LRU技术来淘汰老的数据,Memcached默认是启用LRU操作的,在这种情况下所有的set操作都会成功,如果Memcached的内存池已经使用完,则会淘汰老数据来存放新数据,如果关闭了Memcached的LRU,则当Memcached没有多余的内存空间时,Memcached之间返回错误,下面我们分析下LRU的
u013702678
·
2014-03-25 20:00
memcached
memcached源码分析
memcached的LRU操作
Memcached源码分析
之do_item_alloc操作
前面我们分析了Memcached的set操作,其set操作在经过所有的数据有效性检查之后,如果需要存储item,则会执行item的实际存储操作,我们下面分析下其过程。//执行item的存储操作,该操作会将item挂载到LRU表和slabcalss中 item*do_item_alloc(char*key,constsize_tnkey,constintflags, constrel_time_te
u013702678
·
2014-03-25 19:00
memcached
memcached源码分析
Memcached源码分析
之set操作
之前分析了Memcached的get操作,下面分析set操作的流程。//存储item enumstore_item_typestore_item(item*item,intcomm,conn*c){ enumstore_item_typeret; uint32_thv; hv=hash(ITEM_key(item),item->nkey,0);//获取Hash表的分段锁 item_lock(hv
u013702678
·
2014-03-25 19:00
memcached
memcached源码分析
Memcached源码分析
之item结构
item是Memcached中抽象实际数据的结构,我们分析下item的一些特性,便于后续Memcached的其他特性分析。typedefstruct_stritem{ struct_stritem*next;//item在slab中存储时,是以双链表的形式存储的,next即后向指针 struct_stritem*prev;//prev为前向指针 struct_stritem*h_next;//Ha
u013702678
·
2014-03-24 20:00
memcached
memcached源码分析
memcached的item
memcached内存结构
上一页
1
2
3
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他