内存缓存技术在WEB分布式架构中的应用
- Memcached是什么?
- Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余(例如,复制其hashmap条目);当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。
- 软件准备:
- 下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
- 下载:http://www.monkey.org/~provos/libevent-1.3.tar.gz
- 1.先安装libevent:
- # tar zxvf libevent-1.3.tar.gz
- # cd libevent-1.3
- # ./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
- 2.安装memcached
- # tar zxvf memcached-1.2.0.tar.gz
- # cd memcached-1.2.0
- # ./configure --with-libevent=/usr
- # make
- # make install
- 安装完成后会把memcached放到 /usr/local/bin/memcached
- 测试是否成功安装memcached:
- # ls -al /usr/local/bin/mem*
- -rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
- -rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug
- 3.安装Memcache的PHP扩展
- 3.1.在http://pecl.php.net/package/memcache 选择相应想要下载的memcache版本。
- 3.2.安装PHP的memcache扩展
- #tar vxzf memcache-2.2.1.tgz
- #cd memcache-2.2.1
- #/usr/local/php/bin/phpize
- #./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
- #make
- #make install
- 3.3.上述安装完后会有类似这样的提示:
- Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/
- 3.4.把php.ini中的extension_dir = "./" 修改为
- extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/"
- 3.5.添加一行来载入memcache扩展:extension=memcache.so
- 4.memcached的基本设置:
- 4.1.启动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
- 4.2.如果要结束Memcache进程,执行:
- # kill `cat /tmp/memcached.pid`
- 也可以启动多个守护进程,不过端口不能重复。
- 4.3.重启apache,service httpd restart
- 5.Memcache环境测试:
- 运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!
- < ?php
- $mem = new Memcache;
- $mem->connect(”127.0.0.1″, 11211);
- $mem->set('key', 'This is a test!', 0, 60);
- $val = $mem->get('key');
- echo $val;
- ?>