环境架设   /   40

memcached是一套分布式的快取或缓存系统,当初是Danga Interactive为了LiveJournal所发展的,但目前被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSD license授权释出。

memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。

memcached的API使用三十二位元的循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。当表格满了以后,接下来新增的资料会以LRU机制替换掉。由于memcached通常只是当作快取系统使用,所以使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)需要额外的程式码更新memcached内的资料。memcached具有多种语言的客户端开发包,包括:Perl/PHP/JAVA/C/Python/Ruby/C#/MySQL/客户端包的下载地址是:http://www.danga.com/memcached/apis.bml

下载和安装

memcache服务端安装


wget http://www.monkey.org/~provos/libevent-1.4.11-stable.tar.gz
wget http://danga.com/memcached/dist/memcached-1.4.0.tar.gz

tar -zxvf libevent-1.4.11-stable.tar.gz
cd libevent-1.4.11-stable
make clean
./configure --prefix=/usr
make;make install

tar zxvf memcached-1.4.0.tar.gz
cd memcached-1.4.0
./configure --prefix=/www/aiwei/memcached --with-libevent=/usr
make;make install

安装完成,启动

/www/aiwei/memcached/bin/memcached -d -m 512 -u apache -p 11211 -c 25600
-d 以守护进程方式启动
-m 512 是指分配512M内存
-u apache 是用apache用户启动
-p 11211 使用11211端口
-c 25600 最大的迸发连接数

PHP扩展(也就是客户端),也就是让PHP支持memcache (假设此服务器已配置好lamp或lnmp的应用环境)
下载安装

wget http://pecl.php.net/get/memcache-2.2.5.tgz
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5
/www/aiwei/php/bin/phpize
./configure --enable-memcache --with-php-config=/www/aiwei/php/bin/php-config --with-zlib-dir
make;make install

在php.ini的最后添加如下几行,如 vi /www/aiwei/php/lib/php.ini

[memcache]
extension_dir ="/www/aiwei/php/lib/php/extensions/no-debug-zts-20060613/"
extension=memcache.so

重启apache

service httpd restart

memcache状态web界面接口,复制memcache.php到网站的根目录,如
cp memcache.php /www/web/aiwei
修改用户密码,如下
vi memcache.php
define(‘ADMIN_USERNAME’,’aiwei’); // Admin Username
define(‘ADMIN_PASSWORD’,’password’); // Admin Password

然后用IE浏览器打开 http://192.168.1.111/memcache.php,即可查看相关状态信息

打开phpinfo检查,如

http://192.168.1.111/phpinfo.php

能看如下图的信息,表示安装成功,也就是你的PHP已经支持memcache了

在你的PHP程序里,就可以使用memcache这个缓存数据库了

缓存系统memcache的安装,配置和使用

PHP测试实例

<?php
//连接
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br />";

//替换数据
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";

//保存数组
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";

//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";

//清除所有数据
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";

//关闭连接
$mem->close();
?>

网络发现者(aiwei.us)是梁道科技旗下以企业建站,微信开发,视觉设计为主要服务项目的互联网品牌。

我们为企业提供各类互联网平台项目的咨询顾问服务。依靠丰富的互联网实践经验,我们为企业从项目可行性分析,执行策略及方案等方方面面提供合理化建议。