Jan 6

memcache服务端和客户端的安装及使用 晴

碟舞飞扬 , 15:15 , 服务器类 , 评论(0) , 引用(0) , 阅读(6917) , Via 本站原创 | |
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.14b-stable.tar.gz
wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz

tar zxvf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-stable
./configure --prefix=/usr
make & make install

tar zxvf memcached-1.4.5.tar.gz
cd memcached-1.4.5
./configure --prefix=/usr/local/memcache/ --with-libevent=/usr
make & make install
安装完成,启动
/usr/local/memcache/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
下载安装
wget http://pecl.php.net/get/memcache-2.2.6.tgz
tar zxvf memcache-2.2.6.tgz
cd memcache-2.2.6
phpize
./configure --with-php-config=/usr/bin/php-config --with-zlib-dir=/usr/ --enable-memcache
make & make install
完成之后在/etc/php.d里面创建一个memcache.ini里面加入extension=memcache.so
重启apache
service httpd restart

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

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

打开phpinfo检查,如
http://192.168.1.168/phpinfo.php
能看如下图的信息,表示安装成功,也就是你的PHP已经支持memcache了

在你的PHP程序里,就可以使用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();
?>
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]