免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1846 | 回复: 0
打印 上一主题 下一主题

【原创】关于memcache 测试 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-02 14:36 |只看该作者 |倒序浏览

                                我之前一直是听人说,自己没有搞过,这些日子天天看美女图片了。
今天才看了看memcache.所以很希望得到批评。^_^
简单的说下memcache.
在此之前,建议大家读一下这篇文章,很有意思。
http://www.socialtext.net/memcached/index.cgi?this_is_a_story_of_caching
至于原理以及启动的参数我就不多描述了,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-threadsmakemake 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
        )
)
以下是一些非常有用的资源:
FAQ。
http://www.socialtext.net/memcached/index.cgi?faq
memcache 基础教程。
http://www.ccvita.com/259.html
memcache 协议。
http://www.ccvita.com/306.html
Discuz 的 memcache 缓存实现。
http://www.ccvita.com/261.html
Linux Memcache 安装。
http://www.ccvita.com/257.html
windows 下的php libmemcache 扩展安装
http://pecl4win.php.net/list.php
libmemcached.
http://download.tangent.org/libmemcached-0.25.tar.gz
memcached UDF
http://dev.mysql.com/doc/refman/5.1/en/ha-memcached-interfaces-mysqludf.html
下载:
http://download.tangent.org/memcached_functions_mysql-0.7.tar.gz
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/29134/showart_1675537.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP