关于memcache这个现在应用广泛的组件,大大提高的网站的响应速度,也方便了程序开发缓存的应用。但是目前针对memcache,网上的资料 大同小异,尤其基于LAMP的网站居多,php/pcel又有两个memcache的client,所以导致很多混乱。这里我研究了两天,记录一下,也方 便有疑问的同学查看。

1   首先 memcache(服务端)的介绍就不多说了。一个基于内存的缓存系统,它是一个服务。并且*nux上大多数服务都以守护进程的形式存在,比如http服务有对应的httpd,ssh有对应的sshd 等等。所以针memcache的守护进程就是memcached 了,无可厚非。 安装好服务后,就是启动这个守护进程了。

/usr/local/bin/memcached –d   等等一系列选项 ,默认端口是11211  。关于memcache(服务端),请参考官网:http://memcached.org/  。

2   既然sever端有服务了,接下来就需要有client 能连接上,以提供服务啊。当然可以通过telnet
xxx.xxx.xxx.xx 11211
这种方式直接连上server端,这对于手工调试挺方便的。并且telnet上之后,有相关的stats/stats items /stats
cachedump x y  等命令。  但是对于各种语言的程序连接,则需要通过client来实现。接着php起先开发出来memcache服务端)的client(客户端)
,很不幸这个client叫做 memcache(客户端).   这个客户端以pcel形式发布:http://pecl.php.net/package/memcache。另外,php手册上对于memcache的使用:http://www.php.net/manual/en/memcache.examples-overview.php 
的例子也是基于这个client的。

3  后来09年的时候,Brian Aker开发出了一个基于c/c++ 的memcache的客户端,叫做libmemcache,官网:http://libmemcached.org/libMemcached.html   这个client维护更新很快,并且功能效率等都比php那个memcache(客户端)要好(你肯定会说当然了,因为一个是c/c++,一个是php。这个先暂时不争论,接着往后看)。这个client同时提供了更方便的命令行工具(省着telnet
11211):如memcat --servers=xxx  / memstat --servers=xxx 等。

4  有了libmemcache 这个牛X的client。php也不甘寂寞,何不拿来用呢?于是乎,php又弄出一个基于libmemcache的client,非常不幸这个client叫做memcached(客户端):也是以pcel形式发布:http://pecl.php.net/package/memcached 
.  这个client的特点基本跟 libmemcache差不多。

5 所以针对php开发来说,要在特定的语境里区分同名的意义。有时memcache ,有时 memcached ,有时client ,有时server 。不管怎么说,只要我们知道这其中关系跟原理,神马都是浮云。

class MCache
{ private static $server = array('127.0.0.1', 11211);
private static $client = 'memcached'; // memcache or memcached private static function get_memcache()
{
static $memcache;
if (!is_object($memcache))
{
$memcache = self::$client === 'memcached' ? new Memcached() : new Memcache ;
$memcache->addServer(self::$server[0],self::$server[1]);
}
return $memcache;
} public static function set($key, $value, $expire=600)
{
self::$client === 'memcached' ? self::get_memcache()->set($key, $value, $expire)
: self::get_memcache()->set($key, $value, MEMCACHE_COMPRESSED, $expire);
} public static function get($key)
{
return self::get_memcache()->get($key);
} } MCache::set('test_one', 'value_one', 60); # 60 Sec
print_r(MCache::get('test_one'));

转于:http://blog.csdn.net/aylazhang/article/details/6935569

扩展:给memcache中的key加命名空间:http://www.cnblogs.com/xianbei/archive/2011/01/02/1921258.html

memcache概念浅谈及名称混乱之区分的更多相关文章

  1. Arcgis Android 基本概念 - 浅谈

    MapView     MapView 是 Android 中 ViewGroup的子类,也是 ArcGIS Runtime SDK for Android 中的地图容器,与很多 ArcGIS API ...

  2. H5应用程序缓存浅谈及实际测试

    应用程序缓存能做什么? 可以在脱离网络的条件下离线访问. 减少读取服务器文件,减轻服务器的访问压力. 优化网站打开速度. 如何启用应用缓存? 第一步:给服务器添加新的MIME:扩展名:.appcach ...

  3. Android v2.0 基本概念 - 浅谈

    目录 Android框架 Linux Kernel 系统运行库 Libraries Android Runtime Application Framework Application Android框 ...

  4. 【转】数据仓库ODS、DW和DM概念区分

    今天看了一些专业的解释,还是对ODS.DW和DM认识不深刻,下班后花时间分别查了查它们的概念. ODS——操作性数据 DW——数据仓库 DM——数据集市 1.数据中心整体架构   数据中心整体架构 数 ...

  5. MemCache超详细解读

    MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高 ...

  6. 【腾讯Bugly干货分享】浅谈Android自定义锁屏页的发车姿势

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57875330c9da73584b025873 一.为什么需要自定义锁屏页 锁屏 ...

  7. 浅谈 Android 自定义锁屏页的发车姿势

    作者:blowUp,原文链接:http://mp.weixin.qq.com/s?__biz=MzA3NTYzODYzMg==&mid=2653577446&idx=2&sn= ...

  8. memcache详解

    MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度. Me ...

  9. SOA之(5)——REST的SOA(SOA with REST)概念

    REST的SOA(SOA with REST)概念 发展 1992年网站(Web Sites)是在Web浏览器和Web服务器直接通过HTTP传输HTML. 2000年WS-* (Web Service ...

随机推荐

  1. Android从开源到碎片化 开发者叛离的真相

    Android从诞生开始就受到热捧,并日益普及.它有别于以往的手机及移动终端操作系统,其独具的开源性.系统廉价性和提供给第三方大自由度的创新空间,以及不受硬件约束的优势,获得了广大开放社群的支持.但是 ...

  2. (转)RedHat/CentOS安装和配置kerberos

    RedHat/CentOS安装和配置kerberos 需要在kerberos server和客户端都先安装ntp (Internet时间协议,保证服务器和客户机时间同步 ) 1  kerberos 服 ...

  3. C++迭代器之'反向迭代器'

    反向迭代器(Reverse Iterator)是普通迭代器的适配器,通过重新定义自增和自减操作,以达到按反序遍历元素的目的.如果在标准算法库中用反向迭代器来代替普通的迭代器,那么运行结果与正常情况下相 ...

  4. transparent shadow caster unity

    https://forum.unity.com/threads/semitransparent-shadows.276490/ semitransparent shadows dither 类似alp ...

  5. shader cycles静态分析

    mali Mali Offline Compiler https://developer.arm.com/products/software-development-tools/graphics-de ...

  6. Jupyter Notebook 快捷键

    Jupyter Notebook 快捷键 从命令模式进入编辑模式需按 Enter 键,从编辑模式切换到命令模式需按Esc 键. Jupyter Notebook 是一个交互式笔记本程序, 其有丰富的快 ...

  7. 利用内存分析工具(Memory Analyzer Tool,MAT)分析java项目内存泄露

    转载:http://blog.csdn.net/wanghuiqi2008/article/details/50724676 一.开发环境: 操作系统:ubuntu 14.04 IDE:Eclipse ...

  8. 浏览器开发调试工具的秘密 - Secrets of the Browser Developer Tools

    来源:GBin1.com 如果你是一个前端开发人员的话,正确的了解和使用浏览器开发工具是一个必须的技能. Secrets of the Browser Developer Tools是一个帮助大家了解 ...

  9. profile_oracle设置某用户password永只是期

    原创作品.出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46888139 or ...

  10. ASP.NET MVC扩展之HtmlHelper辅助方法

    什么是HtmlHelper辅助方法? 其实就是HtmlHelper类的扩展方法,如下所示: namespace System.Web.Mvc.Html { public static class Fo ...