首页 > 收集 > 开启mem_cached高速缓存

开启mem_cached高速缓存

2009年4月23日 发表评论 阅读评论

Memcached是什么?
Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

Memcached能缓存什么?
通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

Memcached快么?

非常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表, 因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).。

Danga Interactive为提升Danga Interactive的速度研发了Memcached。目前,LiveJournal.com每天已经在向一百万用户提供多达两千万次的页面访问。而这些,是由一个由web服务器和数据库服务器组成的集群完成的。Memcached几乎完全放弃了任何数据都从数据库读取的方式,同时,它还缩短了用户查看页面的速度、更好的资源分配方式,以及Memcache失效时对数据库的访问速度。

Memcached的特点
Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。

Memcached的使用
一 Memcached服务器端的安装
Memcached下载地址 http://www.danga.com/memcached/
memcache PHP模块下载地址 http://pecl.php.net/package/memcache 推荐使用1.5版
libevent 下载地址 http://www.monkey.org/~provos/libevent/
1.安装libevent:

# wget http://www.monkey.org/~provos/libevent-1.4.9-stable.tar.gz
# tar zxvf libevent-1.4.9-stable.tar.gz
# cd libevent-1.4.9-stable
# ./configure
# make
# make install

默认会安装在/usr/local/下,检查安装的文件

# ls -l /usr/local/lib/libevent*

2.安装Memcached

# wget http://memcached.googlecode.com/files/memcached-1.2.8.tar.gz
# tar zxvf memcached-1.2.8.tar.gz
# cd memcached-1.2.8
# ./configure –with-libevent=/usr/local
# make
# make install

安装完成后memcached的路径为:/usr/local/bin/memcached

3.安装Memcache的PHP扩展

# wget http://pecl.php.net/get/memcache-2.2.5.tgz
# tar zxvf memcache-2.2.5.tgz
# cd memcache-2.2.5
# whereis phpize
phpize: /usr/local/bin/phpize
# /usr/local/bin/phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
# whereis php-config
php-config: /usr/local/bin/php-config
# ./configure --enable-memcache --with-php-config=/usr/local/bin/php-config
# make
# make install

安装成功,出现

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

修改php.ini
extension_dir = “/usr/local/lib/php/extensions/no-debug-non-zts-20060613/”
然后在下面添加:extension=memcache.so 来加载

3.启动Memcache的服务器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
要注意的是如果你的服务器有防火墙的话注意端口问题。
我用的# /usr/local/bin/memcached -d -m 10 -u root
4.如果要结束Memcache进程,执行:
# kill `cat /tmp/memcached.pid`
5.重启apache

提示找不到libevent
用下面命令检查一下

# LD_DEBUG=libs /usr/local/bin/memcached -v

看到加载地址,然后做个软链接

# ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2

我的是64bit,所以是

# ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib64/libevent-1.4.so.2

这东西适合独立服务器及多个服务器分布的情况安装,虚拟主机不适合,因为安全性问题。

参考文章:

http://www.wordpresschina.com/memcache-optimize-wordpress-under-lunix.html

http://bbs.chinaunix.net/archiver/?tid-1016121.html

http://u.discuz.net/home/space-19362-do-blog-id-17965.html

分类: 收集 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.