memcached安装

windows版本的memcache : http://jehiah.cz/projects/memcached-win32/

相关软件

Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent

安装步骤

我分别把两个东东下载回来,放到 /tmp 目录下:

# cd /tmp
# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz

先安装libevent:

# tar zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure --prefix=/usr
# make
# make install

然后看看我们的libevent是否安装成功:

# ls -al /usr/lib | grep libevent
lrwxrwxrwx    1 root     root          21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x       1 root     root          263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r--r--        1 root     root          454156 11?? 12 17:38 libevent.a
-rwxr-xr-x       1 root     root          811 11?? 12 17:38 libevent.la
lrwxrwxrwx    1 root     root          21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3

还不错,都安装上了,再来安装memcache,同时需要安装中指定libevent的安装位置:

# cd /tmp
# tar zxvf memcached-1.2.0.tar.gz
# cd memcached-1.2.0
# ./configure --with-libevent=/usr --prefix=/usr/local/memcached
# make
# make install

安装完之后要启动服务

root@tonyvicky:# cd /usr/local/memcached/bin
root@tonyvicky:# ./memcached -d -m 512 -p 11211 -u root

参数说明 -m 指定使用多少兆的缓存空间;-p 指定要监听的端口; -u 指定以哪个用户来运行

-d选项是启动一个守护进程,-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,-u是运行Memcache的用户,我这里是root,-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,-c选项是最大运行的并发连接数,默认是1024

memcached使用

直接用 memcached 的php class 就可以了。不过为了效率更高,可以使用 memcache PHP模块

安装memcache PHP模块

root@tonyvicky:# tar vxzf memcache-1.5.tgz
root@tonyvicky:# cd memcache-1.5
root@tonyvicky:# /usr/local/php/bin/phpize
root@tonyvicky:# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
root@tonyvicky:# make
root@tonyvicky:# make install

安装完后会有类似这样的提示:

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/

把这个记住,然后修改php.ini,把

 extension_dir = "./"

修改为

 extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/"

并添加一行

extension=memcache.so

例子

<?php
$memcache = new Memcache; //创建一个memcache对象
$memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', 'test'); //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key'); //从内存中取出key的值
echo $get_value;
?>

其他

  • memcache::add 添加,仅仅在key不存在的时候。
  • memcache::set 添加,如果key存在,直接覆盖。
  • Memcache::replace 当key值存在时替换value 否则返回false

技巧

  • 命令行查看Memcached运行状态

很多时候需要监控服务器上的Memcached运行情况,比如缓存的查询次数,命中率之类的。但找到的那个memcached-tool是linux下用perl写的,我也没试过windows能不能用。后来发现个简单的办法可以做到,就是使用Telnet。

首先登录到服务器,然后在cmd命令行中键入

telnet 127.0.0.1 11211

其中127.0.0.1是服务器的地址(这里是本机) ,11211是memcached绑定的端口号。

之后命令行窗口全黑只有光标提示,摸黑输入stats,即可得到描述Memcached服务器运行情况的参数

pid 	memcache服务器的进程ID
uptime 	服务器已经运行的秒数
time 	服务器当前的unix时间戳
version 	memcache版本
pointer_size 	当前操作系统的指针大小(32位系统一般是32bit)
rusage_user 	进程的累计用户时间
rusage_system 	进程的累计系统时间
curr_items 	服务器当前存储的items数量
total_items 	从服务器启动以后存储的items总数量
bytes 	当前服务器存储items占用的字节数
curr_connections 	当前打开着的连接数
total_connections 	从服务器启动以后曾经打开过的连接数
connection_structures 	服务器分配的连接构造数
cmd_get 	get命令(获取)总请求次数
cmd_set 	set命令(保存)总请求次数
get_hits 	总命中次数
get_misses 	总未命中次数
evictions 	为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
bytes_read 	总读取字节数(请求字节数)
bytes_written 	总发送字节数(结果字节数)
limit_maxbytes 	分配给memcache的内存大小(字节)
threads 	当前线程数

参考资料

linux/memcached.txt · 最后更改: 2009/02/19 05:50 由 kenvin
到顶部
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0 红麦软件 红麦软件