在CentOS 5.6上编译安装Memcached

首先上一个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

  
  
  
  
  1. # yum install libevent libevent-devel -y

2、下载并解压memcached-1.4.5

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

  
  
  
  
  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

  
  
  
  
  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

  
  
  
  
  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,脚本内容如下:

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

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

6、设置memcached随系统启动

  
  
  
  
  1. # chkconfig --add memcached
  2. # chkconfig --level 35 memcached on

启动memcached

  
  
  
  
  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 显示帮助

猜你喜欢

转载自qianxunniao.iteye.com/blog/1279211