您现在的位置:首页 --> 查看专题: Memcache
consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛; 1 基本场景 比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ; hash(object)%N 一切都运行正常,再考虑如下的两种情况;
TCP协议 memcached 的客户端使用TCP连接与服务器通讯。一个运行中的memcached服务器监视一些端口。客户端连接这些端口,发送命令到服务器,读取回应,最后关闭连接。 结束会话不需要发送任何命令。当不再需memcached服务时,要客户端可以在任何时候关闭连接。需要注意的是,鼓励客户端缓存这些连接,而不是每次需要存取数据时都重新打开连接。这是因为memcached 被特意设计成及时开启很多连接也能够高效的工作。缓存这些连接,可以消除建立连接所带来的开销。 在memcache协议中发送的数据分两种:文本行和自由数据。 文本行被用于来自客户端的命令和服务器的回应。自由数据用于客户端从服务器端存取数据时。同样服务器会以字节流的方式传回自由数据。服务器不用关心自由数据的字节顺序。
memcache是什么说略过,大家都懂。这篇文章主要分析memcache的网络处理,memcache的网络处理是基于libevent的库写的,下面依据源代码来一步一步讲解。
其它先不说,直接上张图,为什么呢,看图说话,哈哈。。入主题,上篇我们讲到网络处理,这次讲讲数据存储,从上面图上基本可以看到处理流程,不过忽略了一些细节,但里面有两个地方要值得说一下,在图上也做了标注,就是图中的1和2,分别是内存分配和hashtable管理, 1、内存分配,当一条命令的参数解析完之后,就要为之分配其内存空间,要分配的空间大小=key长度+1+后缀长度+内容长度,这里的后缀长度其实是压缩参数和内容长度的a...
使用PHP的memcache模块写了一个访问tokyotrant的long-live程序,因为是long-live的,所以我就connect一次之后一直使用了,理论上我connect之后就可以一直使用,中间不会出现重新连接的问题,为了确认我的推断,启动进程之后,我用strace跟踪了一些进程,令我意外的是,隔一段时间连接就会关闭,然后重新连接,怎么回事呢?我怀疑两个方面:1. 我的程序有问题2. server端有问题,用一段时间会关掉我的连接首先,我用了大约1个小...
周六的S2 Web 2.0技术沙龙上介绍了memcache中使用mutex场景,有网友对详情感兴趣,简单介绍如下。场景 Mutex主要用于有大量并发访问并存在cache过期的场合,如 首页top 10, 由数据库加载到memcache缓存n分钟微博中名人的content cache, 一旦不存在会大量请求不能命中并加载数据库需要执行多个IO操作生成的数据存在cache中, 比如查询db多次 问题在大并发的场合,当cache失效时,大量并发同时取不到cache,会同一瞬间去访问db...
在一次抓包的过程中,发现我的PHP在访问memcache的时候时不时的会多出一个“version”的操作,结果就是返回memcached的版本号;疑惑不解,我发誓自己没有写这部分代码的,为什么会凭空多出一个“version”操作呢?看看源代码吧!
用nc命令快速清空memcache e.g memcache的端口是11211 echo \"flush_all\" | nc192.168.1.60 11211...
一次在使用PHP的memcache-2.2.4模块访问mc时,不小心把含有tab的字符串做了key,在跟踪时发现我的key中出现tab的地方都成了“_”了,于是怀疑memcache-2.2.4对我的key做了处理了,于是看了memcache-2.2.4的源码,才发现如下函数,该函数里面将assii码小于空格的字符都要转换成“_”的。int mmc_prepare_key_ex(const char *key, unsigned int key_len, char *result, unsigned int *result_lenTSRMLS_DC) /*...
继上次解决memcache连接慢问题以来,好长一段时间没在这个问题上翻过跟头。这一次我又在生产环境观察到php和memcache的连接时间经常会在50ms以上。作为一个cache,占用了这么长的执行时间,天理何在?
最近用xdebug观察线上程序的运行时间统计,发现往日里跑起来像飞的memcache居然是系统中拖后腿的耗时大户,连接时间特长。运行环境 webserver是apache + php
前言应该是很久之前,我开始研究Memcache,写了一系列的学习心得,比如《Discuz!的Memcache缓存实现》等。后面的好几十条回复也让这篇文章成为了此博客中颇受关注的一员。同时在百度和Google,关键词Memcache在长达一年多的时间里占据着第二位(第一位是官方),为很多需要了解或者应用Memcache的朋友提供了一些信息,但是我始终觉着还不够,于是本文诞生。
一直以来,由于php本身的session机制不能跨机,令很多phper感到不爽,现在流行的解决方案主要有:1)使用数据库来实现2)自己写server端,通过改写session处理函数来请求3)使用nfs等跨机存储来保存session4)使用memcache来保存5)使用zend platform提供的解决方案其中的1-4都是通过改用可以跨机的储存机制,再使用session_set_save_handler()来实现,5是zend公司的商业产品(不过据之前在使用的同事反映,效果不太满意),以上的方案,各有利弊,不...
1)已经有for win的memcached了,可以在此下载(http://jehiah.cz/projects/memcached-win32/)下载回来,直接解压后,进入解压后的目录,使用memcached -d install安装成一个windows的服务,要查看其它参数,可用memcached -h2)每个被放到memcached的数据,key不能超过250个字节,value不能超过1M,否则会存不进去3)当分配的内容全部用完后,再往里面放数据时,已过生命期的先被清除(已过生命期的数据,会在get的时候被清除),如果还不够用,就会自...
[ 共14篇文章 ][ 第1页/共1页 ][ 1 ]
近3天十大热文
- [70] Twitter/微博客的学习摘要
- [66] 如何拿下简短的域名
- [65] IOS安全–浅谈关于IOS加固的几种方法
- [64] find命令的一点注意事项
- [63] android 开发入门
- [63] Go Reflect 性能
- [61] 流程管理与用户研究
- [59] 图书馆的世界纪录
- [59] 读书笔记-壹百度:百度十年千倍的29条法则
- [59] Oracle MTS模式下 进程地址与会话信
赞助商广告