WEB开发网
开发学院数据库MySQL 关于memcache 测试 阅读

关于memcache 测试

 2009-06-12 10:43:03 来源:WEB开发网   
核心提示:简单的说下memcache. 在此之前,建议大家读一下这篇文章,关于memcache 测试,很有意思, 至于原理以及启动的参数我就不多描述了, http://cn2.php.net/manual/en/ref.memcache.php 来做个测试, 先搞个表: create table t(id char(36) no

简单的说下memcache.

在此之前,建议大家读一下这篇文章,很有意思。

至于原理以及启动的参数我就不多描述了,memcached -h 就有了或者GOOGLE一下一大堆。

我说明一下她的分布式应用。

可以有N多memcached 服务分别装在不同的服务器上。然后按照自己的算法缓存数据库的数据到每个memcached服务器上。

当然MySQL的Federated引擎也可以做为分布式应用。

她俩有以下优缺点:

1. Federated 获取的数据是实时的,而Memcache非实时数据。

2. Memcache 的速度是没得说,因为她完全是放在内存里面进行的,而且不需要SQL解析。Federated 则不行。

唉,只可惜我现在没有条件测试。而且我画的图比较恶心,所以暂时省略掉了。^_______^

1.下面来安装Memcache 服务器端.

所需软件:libevent

下载地址:http://www.monkey.org/~provos/libevent-1.4.8-stable.tar.gz

memcached

下载地址:http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz

编译安装:

1.先编译libevent.

./configure --prefix=/usr/local/libevent;make;make install;

2.再编译memcached.

./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent --enable-threads
make
make install;

由于之前系统自动安装了libevent.我想挂载我编译的libevent.

[root@localhost x]# cp /usr/local/libevent/lib/libevent-1.4.so.2.1.2
[root@localhost x]# ln -s libevent-1.4.so.2.1.2 libevent-1.4.so.2

再加一个用户.

useradd memcached.(你可以给你的这个用户设置密码等。)

之后就可以启动memcached了。

/usr/local/memcached/bin/memcached -umemcached -d start -m 120MB

2. 搞个PHP的memcache扩展来简单用一下。

由于我的PHP在本机的XP上。所以非常的简单。直接下载DLL,然后修改php.ini.

下载地址:http://pecl4win.php.net/ext.php/php_memcache.dll 根据你的PHP版本下载。

这里是所有的memcache 函数列表。

http://cn2.php.net/manual/en/ref.memcache.php

来做个测试。

先搞个表:

create table t(id char(36) not null primary key, username varchar(20) not null);

插点数据:

insert into t values (uuid(),'Livia'),(uuid(),'Lucy'),(uuid(),'Sivia'),(uuid(),'david');

写个简单脚本测试一下。

<?php
$host = '192.168.1.21:3306';
$user = 'webuser';
$passwd = '123456';
$db = 'test';
$conn = mysql_connect($host,$user,$passwd);
mysql_select_db($db,$conn);
$sql = 'select * from t order by id desc';
$result = mysql_query($sql,$conn);
while ($row = mysql_fetch_array($result,MYSQL_ASSOC)){
$test_key[] = $row;
}
$sql = md5($sql);
$mem = new Memcache;
$mem->connect("192.168.1.21", 11211);
$mem->set($sql,$test_key, MEMCACHE_COMPRESSED, 600);

print_r($mem->get($sql));
?>

看看结果出来了。

C:\>php -f "d:/lamp/web2/phpinfo.php"
Array
(
[0] => Array
(
[id] => d8f1ec2a-c033-11dd-bd1a-002215c94322
[username] => david
)

[1] => Array
(
[id] => d8f1eb9e-c033-11dd-bd1a-002215c94322
[username] => Sivia
)

[2] => Array
(
[id] => d8f1ea9a-c033-11dd-bd1a-002215c94322
[username] => Lucy
)

[3] => Array
(
[id] => d8f1e658-c033-11dd-bd1a-002215c94322
[username] => Livia
)

)

Tags:关于 memcache

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接