memcached存储的方式是key=>value的方式,即键值对的方式。
memcached是memcache的一个升级版,官方主页是memcached.org,可以直接到官方主页去下载tar包,现在最新的版本是1.4.24,我使用的环境为Centos7.0,已安装LNMP环境。
//解压&配置&编译&安装
tar -zxf memcached-1.4.24.tar.gz
cd memcached-1.4.24
./configure --prefix=/usr/local/memcached
make && make install
安装时指定的路径是/usr/local/memcached目录,并没有在系统的搜索路径内产生可执行文件,为了可以在shell下直接运行memcached来操作,需要设置一个连接,就把它连接到/usr/sbin/目录下。
ln -s /usr/local/memcached/bin/memcached /usr/sbin/memcached
现在安装已经完成,尝试启动memcached
memcached -u root -d
-u :指定启动的用户;
-d:在后台运行;
-p :指定监听的端口号,缺省是11211;
-m :最大可用内存,单位是MB,缺省是64MB;
-c :软连接数量,缺省是1024;
-v:输出警告和错误信息;
-vv:打印客户端的请求和返回信息。
对memcached进行测试需要安装telnet,通过yum -y install telnet进行安装,安装完成后进行连接:
# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
出现如上的显示,则表示memcached已安装并连接成功,来测试一下:
# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set name 1 0 5
liang
STORED
get name
VALUE name 1 5
liang
END
set name 1 0 5:设置一个key为name的值,长度为5,标志为1,时长为永久(这个永久是相对而言的,memcached是存在于缓存当中,当断电后数据会丢失;同时,即使在不断电的情况下,当memcached被分配的内存页使用尽时,也可能会为了存储新的内容而将这个键值对删除掉。memcached使用的内存页置换算法是LRU,即Least Recent Used近期最少使用算法)。
get name:获取key=name的值。
quit:退出。
要在php中使用memcached,就需要安装memcached的php扩展。memcached的php扩展分为两种,分别是memcache与memcached,我们选择安装的是memcached,它依赖于libmemcached,所以需要先安装libmemcached。
为什么选择memcached扩展:
在上一节安装的是memcached-1.4.24版本,memcached在1.2.4版本及以后增加了CAS(Check And Set)协议,用来处理同一个key的多进程并发处理问题。而memcache扩展并不支持CAS,所以选择memcached扩展。
网站:
pecl.php.net是php的扩展包网站,memcached扩展包可以在上面找到,我用的是memcached-2.2.0。
libmemcached包在这个网站上并没有找到,可以百度搜索一下就能找到,我用的是libmemcached-1.0.18。
安装步骤
//先安装libmemcached
tar -zxf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached
make && make install
下面安装memcached-2.2.0扩展包,要注意的是解压后的目录中并没有configure文件,需要先切入解压后的目录,然后执行/usr/local/php/bin/phpize(/usr/local/php是我的系统php的安装目录)来生成configure文件。
在配置时,需要指定几个参数:
-with-php-config=/usr/local/php/bin/php-config:指定php的配置路径;
-with-libmemcached-path=/usr/local/libmemcached:指定libmemcached路径;
–disable-memcached-sasl:跳过验证,不加这个参数的话在centos7中会报错误。
tar -zxf memcached-2.2.0.tgz
cd memcached-2.2.0
/usr/local/php/bin/phpize
./configure -enable-memcached -with-php-config=/usr/local/php/bin/php-config -with-libmemcached-dir=/usr/local/libmemcached/ -prefix=/usr/local/phpmemcached --disable-memcached-sasl
make && make install
编译安装完成后,还需要修改一下php的配置文件php.ini,在里面加上一行extension = “memcached.so”
写个测试例子测试一下(vi /home/wwwroot/default/test.php):
<?php
$mem = new Memcached();
$mem->addServer('127.0.0.1',11211);
$mem->set('company','inspur BJ');
$var = $mem->get('company');
echo $var;
运行如下:
[root@localhost default]# php test.php
inspur BJ