在CentOS 5.6上编译安装Memcached

12 篇文章 0 订阅
12 篇文章 0 订阅

首先上一个memcached原理图,让不了解memcached的兄弟普及一下:

点击放大图片

基本原理作如下简单描述:

① 客户端第一次访问应用程序时,会到数据库(RDBMS)中取出数据,返回给客户端;同时也将取出的数据保存到memcached中。

② 第二次访问时,因为数据已经缓存,不不用去数据库查询了,直接从memcached取。

那么memcached的快速和高效率是如何体现出来的呢?我们都清楚,RDBMS是文件型的数据库,最终还是以文件的形式保存在磁盘上。而 memcached则不一样,它是key:value关系型的数据库,是保存在内存中的。那么就不用我再做说明了,内存的读写速度要比磁盘的读写速度快得 多,前者是后者的10的6次方倍。

memcached是基于libevent的事件处理。libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue 等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。 memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。关于事件处理这里就不再详细介 绍,可以参考Dan Kegel的The C10K Problem。欲了解更更多关于libevent:http://monkey.org/~provos/libevent/

在CentOS 5.6上编译安装Memcached

1、 由于memcached是基于libevent的,因此需要安装libevent,libevent-devel

 
view plain     copy
  1. # yum install libevent libevent-devel -y 

2、 下载并解压memcached-1.4.5

memcached官方网站是:http://memcached.org/

 
view plain     copy
  1. # cd /root 
  2. # wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz 
  3. # tar -xvzf  memcached-1.4.5.tar.gz 

3、 编译安装memcached-1.4.5

 
view plain     copy
  1. # cd memcached-1.4.5 
  2. # ./configure --prefix =/etc/memcached 
  3. # make 
  4. # make install 

4、 配置环境变量

进入用户宿主目录,编辑.bash_profile,为系统环境变量LD_LIBRARY_PATH增加新的目录,需要增加的内容如下:

# vi .bash_profile

 
view plain     copy
  1. MEMCACHED_HOME =/etc/memcached 
  2. export LD_LIBRARY_PATH =$LD_LIBRARY_PATH:$MEMCACHED_HOME/lib 

刷新用户环境变量:# source .bash_profile

5、 编写memcached服务启停脚本

# cd /etc/init.d

vi memcached,脚本内容如下:

 
view plain     copy
  1. #!/bin/sh  
  2. #  
  3. # Startup script for the server of memcached  
  4. #  
  5. # processname: memcached  
  6. # pidfile: /etc/memcached/memcached.pid  
  7. # logfile: /etc/memcached/memcached_log.txt  
  8. # memcached_home: /etc/memcached  
  9. # chkconfig: 35 21 79  
  10. # description: Start and stop memcached Service  
  11.  
  12. # Source function library  
  13. . /etc/rc.d/init.d/functions 
  14.  
  15. RETVAL=0 
  16.  
  17. prog="memcached"  
  18. basedir=/etc/memcached 
  19. cmd=${basedir}/bin/memcached 
  20. pidfile="$basedir/${prog}.pid"  
  21. #logfile="$basedir/memcached_log.txt"  
  22.  
  23. # 设置memcached启动参数  
  24. ipaddr="192.168.1.201"     # 绑定侦听的IP地址 
  25. port="11211"                     # 服务端口 
  26. username="root"                  # 运行程序的用户身份 
  27. max_memory=64                   # default: 64M | 最大使用内存 
  28. max_simul_conn=1024             # default: 1024 | 最大同时连接数 
  29. #maxcon=51200  
  30. #growth_factor=1.3              # default: 1.25 | 块大小增长因子  
  31. #thread_num=6                   # default: 4  
  32. #verbose="-vv"                  # 查看详细启动信息  
  33. #bind_protocol=binary           # ascii, binary, or auto (default)  
  34.  
  35. start() { 
  36.     echo -n $"Starting service: $prog"  
  37.     $cmd -d -m $max_memory -u $username -l $ipaddr -p $port -c $max_simul_conn -P $pidfile 
  38.     RETVAL=$? 
  39.     echo 
  40.     [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog 
  41.  
  42. stop() { 
  43.     echo -n $"Stopping service: $prog  "  
  44.     run_user=`whoami` 
  45.         pidlist=`ps -ef | grep $run_user | grep memcached | grep -v grep | awk '{print($2)}'`  
  46.         for pid in $pidlist 
  47.         do 
  48. #           echo "pid=$pid"  
  49.             kill -9 $pid 
  50.             if [ $? -ne 0 ]; then 
  51.                 return 1 
  52.             fi 
  53.         done 
  54.     RETVAL=$? 
  55.     echo 
  56.     [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog 
  57.  
  58. # See how we were called.  
  59. case "$1"  in 
  60.     start) 
  61.         start 
  62.         ;; 
  63.     stop) 
  64.         stop 
  65.         ;; 
  66.     #reload)  
  67.     #    reload  
  68.     #    ;;  
  69.     restart) 
  70.         stop 
  71.         start 
  72.         ;; 
  73.     #condrestart)  
  74.     #    if [ -f /var/lock/subsys/$prog ]; then  
  75.     #        stop  
  76.     #        start  
  77.     #    fi  
  78.     #    ;;  
  79.     status) 
  80.         status memcached 
  81.         ;; 
  82.     *) 
  83.         echo "Usage: $0 {start|stop|restart|status}"  
  84.         exit 1 
  85. esac 
  86.  
  87. exit $RETVAL 

设置脚本可被执行:# chmod +x memcached

6、 设置memcached随系统启动

 
view plain     copy
  1. # chkconfig --add memcached 
  2. # chkconfig --level 35 memcached on 
启动memcached
 
view plain     copy
  1. # service memcached start  
  2. //启动的时候实际上是调用了下面的这个命令,以守护进程的方式来启动memcached  
  3. /etc/memcached/bin/memcached -d -m 64 -u root -l 192.168.1.201  
  4. \-p 11211 -c 1024 -P /etc/memcached/memcached.pid 

查看memcached是否启动:

# ps -ef | grep memcached

memcached命令参数解释
参数参数解释及说明
-p <num>监听的端口
-l <ip_addr>连接的IP地址,,默认是本机。-l选项可以不使用,此时表示在所有网络接口地址上监听。建议是-l <ip_addr>指定一个内部网络IP地址,以避免成为外部网络攻击的对象
-d start启动memcached 服务
-d restart重起memcached 服务
-d stop|shutdown关闭正在运行的memcached 服务
-d install安装memcached 服务
-d uninstall卸载memcached 服务
-u <username>以<username>的身份运行 (仅在以root运行的时候有效)
-m <num>最大内存使用,单位MB。默认64MB
-M内存耗尽时返回错误,而不是删除项
-c <num>最大同时连接数,默认是1024
-f <factor>块大小增长因子,默认是1.25
-n <bytes>最小分配空间,key+value+flags默认是48
-h显示帮助
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值