centos搭建memcached方法(本地测试成功)
什么是Memcached
许多Web 应用程序都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大,访问的集中,就会出现REBMS的负担加重,数据库响应恶化,网站显示延迟等重大影响。Memcached是高性能的分布式内存缓存服务器。一般的使用目的是通过缓存数据库查询结果,减少数据库的访问次数,以提高动态Web 应用的速度、提高扩展性。如图:
Memcached作为高速运行的分布式缓存服务器具有以下特点。
1.协议简单:memcached的服务器客户端通信并不使用复杂的MXL等格式,而是使用简单的基于文本的协议。
2.基于libevent的事件处理:libevent是个程序库,他将Linux 的epoll、BSD类操作系统的kqueue等时间处理功能封装成统一的接口。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。
3.内置内存存储方式:为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached,重启操作系统会导致全部数据消失。另外,内容容量达到指定的值之后memcached回自动删除不适用的缓存。
4.Memcached不互通信的分布式:memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。他的分布式主要是通过客户端实现的。
相关文档下载:
http://pan.baidu.com/s/1o6pJUkE
废话不多说,开始操作:
[root@localhost ~]# cd /data/software 上传libevent-1.4.13-stable.tar.gz文件 [root@localhost software]# tar -zxvf libevent-1.4.13-stable.tar.gz [root@localhost software]# cd libevent-1.4.13-stable [root@localhost libevent-1.4.13-stable]# ./configure --prefix=/usr [root@localhost libevent-1.4.13-stable]# make && make install [root@localhost libevent-1.4.13-stable]# ls -al /usr/lib | grep libevent # 查看 libevent 是否安装完成 上传memcached-1.4.17.tar.gz文件 tar -zxvf memcached-1.4.17.tar.gz cd memcached-1.4.17 [root@localhost memcached-1.4.17]# ./configure --with-libevent=/usr [root@localhost memcached-1.4.17]# make && make install [root@localhost memcached-1.4.17]# ls -al /usr/local/bin/mem* # 查看memcache是否安装完成 # 启动memcache的服务端 #启动Memcache的服务器端: /usr/local/bin/memcached -d -m 200 -u www -p 12321 -c 256 -P /tmp/memcached.pid #(不指定ip)
#参数说明:
#–d选项是启动一个守护进程,
#–m是分配给Memcache使用的内存数量,单位是MB,我这里是200MB,
#–u是运行Memcache的用户,我这里是www (或root),
#–l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址202.207.177.177,
#–p是设置Memcache监听的端口,我这里设置了11211,最好是1024以上的端口,
#–c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
#–P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
#2.如果要结束Memcache进程,执行:
kill `cat /tmp/memcached.pid`
# 添加防火墙规则
# -I 在前面添加规则
# drop目标端口12321端口的所有数据包 iptables -I INPUT -p tcp --dport 12321 -j DROP # 单独接受特定的ip的当前端口的数据包,ip地址 iptables -I INPUT -s 192.168.1.2 -p tcp --dport 12321 -j ACCEPT iptables -I INPUT -s 192.168.1.3 -p tcp --dport 12321 -j ACCEPT iptables -I INPUT -s 192.168.1.4 -p tcp --dport 12321 -j ACCEPT iptables -I INPUT -s 192.168.1.5 -p tcp --dport 12321 -j ACCEPT iptables -I INPUT -s 192.168.1.6 -p tcp --dport 12321 -j ACCEPT
# 查看启动的端口号
netstat -tunpl # 查看当前用户开启的端口
# 安装php-memcache的扩展
[root@localhost]# tar -zxvf memcache-2.2.4.tgz [root@localhost]# cd memcache-2.2.4 [root@localhost]# phpize # 如果没有找到phpize命令则 运行:yum -y install php-devel [root@localhost]#./configure --with-php-config=/usr/bin/php-config --enable-memcache # error: memcache support requires ZLIB. Use --with-zlib-dir=<DIR> to specify prefix where ZLIB include and library are located 这个错误就要执行:yum -y install zlib-devel # ./configure --with-php-config=/data/apps/php/bin/php-config --enable-memcache make make test ## 查看是否可以在扩展目录下找到 memcache.so ls /usr/lib64/php/modules/ # 如果找不到则直接复制一个过去 cp modules/memcache.so /usr/lib64/php/modules/
[root@localhost memcache-2.2.4]# make [root@localhost memcache-2.2.4]# make test 遇到错误: Build complete. Don't forget to run 'make test'. +-----------------------------------------------------------+ | ! ERROR ! | | The test-suite requires that proc_open() is available. | | Please check if you disabled it in php.ini. | +-----------------------------------------------------------+ 解决方法: [root@localhost memcache-2.2.4]# vi /data/conf/php.ini 【修改php.ini配置文件】 找到disable_functions = shell_exec, system, passthru, exec, popen, proc_open() 改为disable_functions = shell_exec, system, passthru, exec, popen 新增一个扩展 extension = "memcache.so" 保存退出。 接着make test
### 如果可以找到则重新加载php配置文件进行测试
service httpd reload
### 测试memcache的功能是否正常
# 新建index.php文件测试看php是否支持memcache
<?php ini_set('display_errors',1); error_reporting(7); $mem = new Memcache; $mem->connect('127.0.0.1',12321); $mem->set('test','Hello world!',0,12); $val = $mem->get('test'); echo $val; var_dump($val);
# 如果页面中输出Hello world!string(12) “Hello world!” 则说明此时php已经支持memcache模块
#开机时自动启动
vi /etc/rc.d/rc.local # memcache 启动 /usr/local/bin/memcached -d -m 200 -u www -p 12321 -c 256 -P /tmp/memcached.pid