Sep 11

memcache:分布式的内存对象缓存系统 晴

, 08/09/11 17:38 , 学习研究 , 评论(0) , 引用(0) , 阅读(1984) , Via 本站原创 | |
memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。Memcache是danga一个项目,最早是为 LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。起初作者编写它可能是为了提高动态网页应用,为了减轻数据库检索的压力,来做的这个缓存系统。它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统, 这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度!基于memcache作者对分布式cache的理解和解决方案。 memcache完全可以用到其他地方 比如分布式数据库, 分布式计算等领域。
memcached 的工作原理

首先 memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。PHP 等客户端在与 memcached 服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。

Array

首先 memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。PHP 等客户端在与 memcached 服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。

Array
1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached
2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装
3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
4.下载php_memcache.dll,请自己查找对应的php版本的文件
5. 在C:\winnt\php.ini 加入一行 ‘extension=php_memcache.dll’
6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!


memcached的基本设置:

-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助

Memcache环境测试:
运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!



Array

直接从官方网站即可下载到 memcached-1.1.12.tar.gz。除此之外,memcached 用到了 libevent,我下载的是 libevent-1.1a.tar.gz。

接下来是分别将 libevent-1.1a.tar.gz 和 memcached-1.1.12.tar.gz 解开包、编译、安装:
Array

Array
# fetch http://www.danga.com/memcached/dist/memcached-1.1.12.tar.gz
   memcached运行需要用到libevent.

# fetch http://monkey.org/~provos/libevent-1.1a.tar.gz
# tar zxvf libevent-1.1a.tar.gz
# cd libevent-1.1a
# ./configure && make
# make install
# make verify
# cd ..
# tar zxvf memcached-1.1.12.tar.gz
# cd memcached-1.1.12
# ./configure --with-libevent=/usr/local
# make
# make check
# make install
# cat > /usr/local/etc/rc.d/memcache.sh
/usr/local/bin/memcached -d -uroot -m 512 -p 12345
# chmod +x /usr/local/etc/rc.d/memcache.sh
安装完成之后,memcached 应该在 /usr/bin/memcached。

Array

运行 memcached 守护程序很简单,只需一个命令行即可,不需要修改任何配置文件(也没有配置文件给你修改 ):

Array

参数解释:
-d 以守护程序(daemon)方式运行 memcached;
-m 设置 memcached 可以使用的内存大小,单位为 M;
-l 设置监听的 IP 地址,如果是本机的话,通常可以不设置此参数;
-p 设置监听的端口,默认为 11211,所以也可以不设置此参数;
-u 指定用户,如果当前为 root 的话,需要使用此参数指定用户。

当然,还有其它参数可以用,man memcached 一下就可以看到了。

Array
### memcache (with libevent)
cd /usr/local/src/
wget http://www.danga.com/memcached/dist/memcached-1.1.12.tar.gz
tar zxvf memcached-1.1.12.tar.gz
cd memcached-1.1.12
./configure
>>>configure: error: libevent is required.  You can get it from http://www.monkey.org/~provos/libevent/

cd /usr/local/src/
wget http://www.monkey.org/~provos/libevent-1.1a.tar.gz
tar zxvf libevent-1.1a.tar.gz
cd libevent-1.1a
./configure
make
make install

cd /usr/local/src/memcached-1.1.12/
LDFLAGS='-L/usr/local/lib'
./configure --with-libevent=/usr/local/libevent-1.1a.so.1
make
make install

cd /usr/lib
ln -s /usr/local/lib/libevent-1.1a.so.1

/usr/sbin/useradd -g users bms -p '$1$AFQRwfs3$/5/asf@$SFOF3lk0fT0'

/bin/nice -n 12 /usr/local/bin/memcached -d -m 128 -l 127.0.0.1 -p bms -u bms
ps -Af

cd /usr/local/src/
wget http://pecl.php.net/get/memcache-1.5.tgz
gzip -d < memcache-1.5.tgz | tar -xvf -
cd memcache-1.5
phpize
./configure --with-zlib-dir=/usr
make
make install
完成后,会显示:Array 这个很重要。下面要修改php.ini

php.ini
=============
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20020429/"
extension=memcache.so

作者:@Everyday NetLog
地址:http://log.zhoz.com/read.php?411
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

发表评论

昵称

网址

电邮

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