什么是 memcache ?
什么是 memcached ?
什么是 memcache.so ?
什么是 memcached.so ?
什么是 libmemcached.so ?
什么是 libmemcache ?
什么是 libmemcached ?
如果刚刚才接触 memcache 的同学看到上面几个问题一定会头皮发麻, 上面几个名词究竟是什么意思, 它们之间的区别与联系是什么呢?
什么是 memcache ?
1 memcache 是一种基于 C/S 架构的内存式缓存系统.
什么是 memcached ?
1 memcached (http://memcached.org/) 是 memcache 这种缓存系统的服务器端. 它以后台守护进程运行于服务器上.
2 memcached 同时也是 memcache 服务器端的后台守护进程名, memcache 服务器端启动命令类似于:
3 # /usr/local/bin/memcached -d -m 1000 -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid
什么是 memcache.so / memcached.so / libmemcached.so ?
01 做为一种 C/S 架构的系统, 统一的服务器端(memcached)可以有很多种不同的客户端连接它对它进行操作. 问题中的三种 xxx.so 就是 memcache 的针对 PHP 的三种不同的客户端.
02
03 最 流行的网络语言 PHP 本身并不能直接与 memcache 服务器端连接和通讯, 但它可以通过加载 PHP 扩展的方式使自己具有连接 memcache 服务器端并操作其数据的功能. 我们可以把 PHP 加载的这种扩展理解为 memcache 缓存系统的 PHP 语言下的客户端. 最常见的操作 memcache 的 PHP 扩展有两种.
04
05 # 一种是 memcache.so (Window下是dll),
06 ×××地址 http://pecl.php.net/package/memcache

07 PHP手册说明页 http://au.php.net/manual/zh/book.memcache.php

08
09 # 另外一种是 memcached.so
10 ×××地址 http://pecl.php.net/package/memcached

11 PHP手册说明页 http://au.php.net/manual/zh/book.memcached.php

12 与 memcache.so 不同的是 memcached.so 在编译安装时是依赖于 libmemcached 客户端库的,
13
14 # 还有一种不常见的是 libmemcached.so
15 ×××地址 https://github.com/kajidai/php-libmemcached

什么是 libmemcache / libmemcached 端呢?
1 和前面的 xxx.so 一样, 这两个 libxxx 也是另外两种不同的客户, 只不过它俩不是给 PHP 语言用的, 而是给 C/C++ 用的.
2
3 # libmemcache
4 ×××地址 http://people.freebsd.org/~seanc/libmemcache/

5
6 # libmemcached
7 ×××地址 http://libmemcached.org/libMemcached.html

8 libmemcached 是 C/C++ 语言下的操作 memcache 服务器端的客户端库, 因为 PHP 的扩展也是用 C/C++ 写的, 所以编译安装 memcached.so 时依赖 libmemcached 也是可以理解的.
memcache.so / memcached.so 二者的区别: http://code.google.com/p/memcached/wiki/PHPClientComparison
还有更多的 memcache 客户端信息可以在 http://code.google.com/p/memcached/wiki/Clients 这里找到.
其实总的来说 memcache 的概念就只有两类, 一类是服务器端, 一类是客户端. 在讨论 memcache 的时候理解清楚这两类概念就OK了, 这样就不会出现别人说 memcache 客户端的问题你却理解成 memcache 服务器端的问题了. 在讨论客户端时也要讲清楚是什么语言的哪一个客户端, 因为 memcache 客户端中有很多名字都差不多, 如果都笼统的用 "memcache 客户端" 来讨论, 往往会造成别人说的是A, 自己理解却是B了.
关于memcache.so和memcached.so:

memcache是完全在PHP框架内开发的,memecached是使用libmemcached的。从手册上看,memcached 会比 memcache 多几个方法,使用方式上都差不多。

memcache是原生实现的,但是使用libmemcached的memached只支持OO接口,而 memcache则是OO和非OO两套接口并存,以后随着memcached服务器端的改进,这个lib也必定会马上跟进的。而memcache却不一定 能做到按时跟进。

memcached,还有个非常称赞的地方,就是flag不是在操作的时候设置了。而是有一个统一的setOption()。memcached 实现了更多的 memcached 协议(毕竟是基于 libmemcached 库的)。

这里有另外一个对比表,很明显,用 memcached 会让人放心很多:http://code.google.com/p/memcached/wiki/PHPClientComparison

差别比较大的一点是,memcached 支持 Binary Protocol,而 memcache 不支持,意味着 memcached 会有更高的性能。不过,还需要注意的是,memcached 目前还不支持长连接。
转自http://www.studyday.net/2011/07/261