服务端
服务端就是memcached,是C语言写的,直接安装即可。
yum install libevent libevent-devel -y
cd /usr/local/src/
wget http://memcached.org/files/old/memcached-1.4.15.tar.gz
tar xf memcached-1.4.15.tar.gz
cd memcached-1.4.15
./configure --prefix=/usr/local/memcaced
make -j 8
make install
/usr/local/memcached/bin/memcached -d -m 1024 -c 1024 -u www
客户端
如果要连接memcached服务端,需要在客户端安装前先安装所依赖的操作库libmemcache和libmemcached。
在这里说一说libmemcache和libmemcached区别
1)先有libmemcache,后有libmemcached
2)前者开发使用率比较高
3)libmemcached使用比较安全,并且内存消耗小,理论上比libmemcache更好
客户端:
这里以php连接memcached服务端的客户端为例:memcache和memcached
这两者都是php的扩展,都是有php官方来维护的,但是有区别:
1)基于的操作库不同,memcache是基于ibmemcache开发的(原生的),memcached扩展是基于libmemcached库开发的,支持cas操作,cas操作就是多个线程并发修改同一个key值时能进行处理。
2)mc支持面向对象和面向过程两套接口操作服务端。而mcd扩展只支持面向对象方式操作
3)memcached支持Binary Protocol,而memcache不支持。还是库的不同导致。理论上这意味着memcached会有更高的性能。
通过$m->setOption(Memcached::OPT_BINARY_PROTOCOL,true) 设置二进制协议。
目前大部分用户还是使用文本协议,比较简单稳定。实践中使用二进制的还是比较少。
共同点:mcd扩展提供session处理模块:provides a session handler
在静态编译到php中时使用选项 --disable-memcache-session 可以关闭memcache的session 支持(默认时开启的)
安装
这里不提如何安装扩展的内容,只提安装过程中的注意事项:
编译memcache和memcached这两个扩展的时候,都需要指定libmemcached库或libmemcache库的的安装路径的。所以预先安装好libmemcached(memcache扩展依赖的是libmemcache库)是编译这个扩展的先决条件。要记得先编译安装好。如下指定安装目录用--with-libmemcached-dir=DIR 来指定路径。这个路径就是安装libmemcached时指定的prefix的值(prefix是指定安装目录)
如果没有指定这个路径项,就会去这些库的默认标准安装目录找(我不知道去×××),所以最好是指定库的位置来安装(可控性强,以后遇到问题方便排查原因,比如以前编译php使用pcre扩展,最好使用php引擎内置的pcre库,使用linux系统上面的,容易出现编码支持问题)。
memcache和memcached
原文:http://blog.51cto.com/laodou/2116872