设为首页 收藏本站
查看: 595|回复: 0

[经验分享] 在CentOS 5.6上编译安装Memcached

[复制链接]

尚未签到

发表于 2016-5-12 09:30:58 | 显示全部楼层 |阅读模式
  
原文地址 : http://www.sunchis.com/html/db/memcached/2011/0526/333.html


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


  • # yum install libevent libevent-devel -y

  2、下载并解压memcached-1.4.5
  memcached官方网站是:http://memcached.org/


view plain   copy


  • # cd /root
  • # wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
  • # tar -xvzf  memcached-1.4.5.tar.gz

  3、编译安装memcached-1.4.5


view plain   copy


  • # cd memcached-1.4.5
  • # ./configure --prefix=/etc/memcached
  • # make
  • # make install

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


view plain   copy


  • MEMCACHED_HOME=/etc/memcached
  • export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MEMCACHED_HOME/lib

  刷新用户环境变量:# source .bash_profile
  5、编写memcached服务启停脚本
  # cd /etc/init.d
  vi memcached,脚本内容如下:


view plain   copy


  • #!/bin/sh
  • #
  • # Startup script for the server of memcached
  • #
  • # processname: memcached
  • # pidfile: /etc/memcached/memcached.pid
  • # logfile: /etc/memcached/memcached_log.txt
  • # memcached_home: /etc/memcached
  • # chkconfig: 35 21 79
  • # description: Start and stop memcached Service

  • # Source function library
  • . /etc/rc.d/init.d/functions

  • RETVAL=0

  • prog="memcached"
  • basedir=/etc/memcached
  • cmd=${basedir}/bin/memcached
  • pidfile="$basedir/${prog}.pid"
  • #logfile="$basedir/memcached_log.txt"

  • # 设置memcached启动参数
  • ipaddr="192.168.1.201"          # 绑定侦听的IP地址
  • port="11211"                    # 服务端口
  • username="root"                 # 运行程序的用户身份
  • max_memory=64                   # default: 64M | 最大使用内存
  • max_simul_conn=1024             # default: 1024 | 最大同时连接数
  • #maxcon=51200
  • #growth_factor=1.3              # default: 1.25 | 块大小增长因子
  • #thread_num=6                   # default: 4
  • #verbose="-vv"                  # 查看详细启动信息
  • #bind_protocol=binary           # ascii, binary, or auto (default)

  • start() {
  •     echo -n $"Starting service: $prog"
  •     $cmd -d -m $max_memory -u $username -l $ipaddr -p $port -c $max_simul_conn -P $pidfile
  •     RETVAL=$?
  •     echo
  •     [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
  • }

  • stop() {
  •     echo -n $"Stopping service: $prog  "
  •     run_user=`whoami`
  •         pidlist=`ps -ef | grep $run_user | grep memcached | grep -v grep | awk '{print($2)}'`
  •         for pid in $pidlist
  •         do
  • #           echo "pid=$pid"
  •             kill -9 $pid
  •             if [ $? -ne 0 ]; then
  •                 return 1
  •             fi
  •         done
  •     RETVAL=$?
  •     echo
  •     [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
  • }

  • # See how we were called.
  • case "$1" in
  •     start)
  •         start
  •         ;;
  •     stop)
  •         stop
  •         ;;
  •     #reload)
  •     #    reload
  •     #    ;;
  •     restart)
  •         stop
  •         start
  •         ;;
  •     #condrestart)
  •     #    if [ -f /var/lock/subsys/$prog ]; then
  •     #        stop
  •     #        start
  •     #    fi
  •     #    ;;
  •     status)
  •         status memcached
  •         ;;
  •     *)
  •         echo "Usage: $0 {start|stop|restart|status}"
  •         exit 1
  • esac

  • exit $RETVAL

  设置脚本可被执行:# chmod +x memcached
  6、设置memcached随系统启动


view plain   copy


  • # chkconfig --add memcached
  • # chkconfig --level 35 memcached on

启动memcached


view plain   copy



  • # service memcached start
  • //启动的时候实际上是调用了下面的这个命令,以守护进程的方式来启动memcached  
  • /etc/memcached/bin/memcached -d -m 64 -u root -l 192.168.1.201  
  • /-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显示帮助




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-215897-1-1.html 上篇帖子: CentOS 5.5 安装记录 下篇帖子: 配置CentOS服务器间的SSH信任登录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表