centos搭建memcached方法

centos搭建memcached方法(本地测试成功)

什么是Memcached

许多Web 应用程序都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大,访问的集中,就会出现REBMS的负担加重,数据库响应恶化,网站显示延迟等重大影响。Memcached是高性能的分布式内存缓存服务器。一般的使用目的是通过缓存数据库查询结果,减少数据库的访问次数,以提高动态Web 应用的速度、提高扩展性。如图:

centos搭建memcached方法


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

废话不多说,开始操作:

[[email protected] ~]# cd /data/software
上传libevent-1.4.13-stable.tar.gz文件
[[email protected] software]# tar -zxvf libevent-1.4.13-stable.tar.gz
 [[email protected] software]# cd libevent-1.4.13-stable
 [[email protected] libevent-1.4.13-stable]# ./configure --prefix=/usr
 [[email protected] libevent-1.4.13-stable]# make && make install

 [[email protected] 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
 [[email protected] memcached-1.4.17]# ./configure --with-libevent=/usr
 [[email protected] memcached-1.4.17]# make && make install

 [[email protected] 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是设置保存Memcachepid文件,我这里是保存在 /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的扩展

[[email protected]]# tar -zxvf memcache-2.2.4.tgz
 [[email protected]]# cd memcache-2.2.4
 [[email protected]]# phpize # 如果没有找到phpize命令则 运行:yum -y install php-devel

 [[email protected]]#./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/

 
 
 

[[email protected] memcache-2.2.4]# make
 [[email protected] 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.               |
 +-----------------------------------------------------------+
解决方法:
[[email protected] 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 

 

未经允许不得转载:好玩吧 » centos搭建memcached方法