本文共 4284 字,大约阅读时间需要 14 分钟。
我之前一直是听人说,自己没有搞过,这些日子天天看美女图片了。
今天才看了看memcache.所以很希望得到批评。^_^
简单的说下memcache.
在此之前,建议大家读一下这篇文章,很有意思。
至于原理以及启动的参数我就不多描述了,memcached -h 就有了或者GOOGLE一下一大堆。
我说明一下她的分布式应用。
可以有N多memcached 服务分别装在不同的服务器上。然后按照自己的算法缓存数据库的数据到每个memcached服务器上。
当然MySQL的Federated引擎也可以做为分布式应用。
她俩有以下优缺点: 1. Federated 获取的数据是实时的,而Memcache非实时数据。
2. Memcache 的速度是没得说,因为她完全是放在内存里面进行的,而且不需要SQL解析。Federated 则不行。
唉,只可惜我现在没有条件测试。而且我画的图比较恶心,所以暂时省略掉了。^_______^
1.下面来安装Memcache 服务器端. 所需软件:libevent
下载地址:
memcached
下载地址:
编译安装:
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.
下载地址: 根据你的PHP版本下载。
这里是所有的memcache 函数列表。
来做个测试。 先搞个表:
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
)
)
3.关于memcache的监控。 本机监控的话,可以直接TELNET上去。
以下命令以及详细用法说明在手册上可以见到。
[root@localhost x]# telnet localhost 11211 Trying 192.168.4.41...
Connected to localhost.
Escape character is '^]'.
stats STAT pid 25247
STAT uptime 223
STAT time 1228377146
STAT version 1.2.6
STAT pointer_size 32
STAT rusage_user 0.010998
STAT rusage_system 0.029995
STAT curr_items 1
STAT total_items 1
STAT bytes 218
STAT curr_connections 5
STAT total_connections 90
STAT connection_structures 6
STAT cmd_get 1
STAT cmd_set 1
STAT get_hits 1
STAT get_misses 0
STAT evictions 0
STAT bytes_read 853
STAT bytes_written 39101
STAT limit_maxbytes 209715200
STAT threads 4
END
stats items STAT items:5:number 1
STAT items:5:age 204
STAT items:5:evicted 0
STAT items:5:outofmemory 0
END
stats slabs STAT 5:chunk_size 232
STAT 5:chunks_per_page 4519
STAT 5:total_pages 1
STAT 5:total_chunks 4519
STAT 5:used_chunks 4519
STAT 5:free_chunks 0
STAT 5:free_chunks_end 4518
STAT active_slabs 1
STAT total_malloced 1048408
END
不过这个好像不是实时的。 实时的话简单的PHP脚本加上WATCH就可以了。 <?php$mem = new Memcache;$mem->connect("192.168.4.41", 11211);print_r($mem->getstats());
// 关于更加详细的可以自己加。?>
[root@localhost ~]# /usr/local/php/bin/php -f watch_memcache.php Array
(
[pid] => 25247
[uptime] => 708
[time] => 1228377631
[version] => 1.2.6
[pointer_size] => 32
[rusage_user] => 0.010998
[rusage_system] => 0.030995
[curr_items] => 1
[total_items] => 1
[bytes] => 218
[curr_connections] => 5
[total_connections] => 93
[connection_structures] => 7
[cmd_get] => 1
[cmd_set] => 1
[get_hits] => 1
[get_misses] => 0
[evictions] => 0
[bytes_read] => 923
[bytes_written] => 40873
[limit_maxbytes] => 209715200
[threads] => 4
)
用WATCH来实时运行它。 [root@localhost ~]# watch "/usr/local/php/bin/php -f watch_memcache.php" 以下是一些非常有用的资源: 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
转载地址:http://fsizn.baihongyu.com/