千家信息网

memcached演练(1) 搭建memcached服务

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,memcached已经火了好多年了,现在网上关于memcached的资源相当多了,我就不浪费话语了。干脆写一个实战系列,坚持一切用实施说话。环境介绍Linux虚拟机内核信息[root@hadoop1
千家信息网最后更新 2026年11月03日memcached演练(1) 搭建memcached服务

memcached已经火了好多年了,现在网上关于memcached的资源相当多了,我就不浪费话语了。干脆写一个实战系列,坚持一切用实施说话。

环境介绍

Linux虚拟机

内核信息

[root@hadoop1 ~]# uname -a
Linux hadoop1 2.6.32-358.el6.i686

内存:1G

安装过程

1.准备编译环境,安装必须的gcc,make工具,如果没有安装yum,最好安装下。网上有很多共享的yum源。

2.下载最新版本的libevent

# wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz

3.解压libevent对应压缩包

# tar zxvf libevent-2.0.22-stable.tar.gz

解压之后的文件路径:/u01/software/libevent-2.0.22-stable

3.编译libevent

$ cd /u01/software/libevent-2.0.22-stable$  ./configure -prefix=/usr/local/libevent$ make$ make install确认安装结果$ ls -al /usr/local/lib |grep libevent

4.下载最新版本的memcached

$ wget http://memcached.org/latest

5.解压memcached对应压缩包

$ tar zxvf memcached-1.4.29.tar.gz

解压之后的文件路径:/u01/software/memcached-1.4.29

6.编译memcached

$ cd /u01/software/memcached-1.4.29$ [root@hadoop1 memcached-1.4.29]# ./configure  -help`configure' configures memcached 1.4.29 to adapt to many kinds of systems.Usage: ./configure [OPTION]... [VAR=VALUE]...Configuration:  -h, --help              display this help and exit      --help=short        display options specific to this package      --help=recursive    display the short help of all the included packages  -V, --version           display version information and exit  -q, --quiet, --silent   do not print `checking ...' messages      --cache-file=FILE   cache test results in FILE [disabled]  -C, --config-cache      alias for `--cache-file=config.cache'  -n, --no-create         do not create output files      --srcdir=DIR        find the sources in DIR [configure dir or `..']Installation directories:  --prefix=PREFIX         install architecture-independent files in PREFIX                          [/usr/local]...Fine tuning of the installation directories:  --bindir=DIR            user executables [EPREFIX/bin]  --sbindir=DIR           system admin executables [EPREFIX/sbin]  --libexecdir=DIR        program executables [EPREFIX/libexec]  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]  --libdir=DIR            object code libraries [EPREFIX/lib]  --includedir=DIR        C header files [PREFIX/include]  --oldincludedir=DIR     C header files for non-gcc [/usr/include]  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]  --infodir=DIR           info documentation [DATAROOTDIR/info]  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]  --mandir=DIR            man documentation [DATAROOTDIR/man]  --docdir=DIR            documentation root [DATAROOTDIR/doc/memcached]  --htmldir=DIR           html documentation [DOCDIR]  --dvidir=DIR            dvi documentation [DOCDIR]  --pdfdir=DIR            pdf documentation [DOCDIR]  --psdir=DIR             ps documentation [DOCDIR]  Optional Packages:  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)  --with-libevent=PATH     Specify path to libevent installation     # ./configure --prefix=/usr/local/memcached  --with-libevent=/usr/local/lib/  # make    # make install

这时候memcached安装成功了

启动memcached

$ /usr/local/memcached/bin/memcached 报错

error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

解决思路

##跟踪运行memcached所有加载库文件的路径

$ LD_DEBUG=libs LD_DEBUG=libs ./memcached -v     15862:     find library=libevent-2.0.so.5 [0]; searching     15862:      search cache=/etc/ld.so.cache     15862:      search path=/lib/tls/i686/sse2:/lib/tls/i686:/lib/tls/sse2:/lib/tls:/lib/i686/sse2:/lib/i686:/lib/sse2:/lib:/usr/lib/tls/i686/sse2:/usr/lib/tls/i686:/usr/lib/tls/sse2:/usr/lib/tls:/usr/lib/i686/sse2:/usr/lib/i686:/usr/lib/sse2:/usr/lib            (system search path)     15862:       trying file=/lib/tls/i686/sse2/libevent-2.0.so.5     15862:       trying file=/lib/tls/i686/libevent-2.0.so.5     15862:       trying file=/lib/tls/sse2/libevent-2.0.so.5     15862:       trying file=/lib/tls/libevent-2.0.so.5     15862:       trying file=/lib/i686/sse2/libevent-2.0.so.5     15862:       trying file=/lib/i686/libevent-2.0.so.5     15862:       trying file=/lib/sse2/libevent-2.0.so.5     15862:       trying file=/lib/libevent-2.0.so.5     ...

首先确认建立软连接

$ ls /usr/local/lib/libevent-2.0.so.5/usr/local/lib/libevent-2.0.so.5$ ln -s /usr/local/lib/libevent-2.0.so.5   /usr/lib/i686/libevent-2.0.so.5

如果以root用户登陆,必须指定-u参数

$ /usr/local/memcached/bin/memcached  -u hadoop

确认memcached是否启动成功

$ ps -ef |grep memcachedhadoop   15891  4034  0 22:45 pts/4    00:00:00 /usr/local/memcached/bin/memcached -u hadooproot     15899 15561  0 22:45 pts/5    00:00:00 grep memcached# netstat -tlnp |grep memcachedtcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      15891/memcached     tcp        0      0 :::11211                    :::*                        LISTEN      15891/memcached

最后telnet 确认下

$ telnet 127.0.0.1 11211Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.statsSTAT pid 15891STAT uptime 86STAT time 1470494793

OK。至此memcached1.4.9版本已经成功在机器上安装。个人感觉最麻烦的地方,就是处理libevent。

参考了很多资源,才把问题解决。

memcached设置自启动

为了方便,现将memcached执行变更下权限

  1. 最简单的启动方式

    只需在/etc/rc.d/rc.local中加入一行
    /usr/local/memcached/bin/memcached -d -m 20 -p 11211 -u hadoop

注意

-d:设置为后台进程

-u:指向用户

-p:端口

-m:内存

  1. 推荐的方式

2.1.拷贝memcached源码包的memcached.sysv拷贝到/etc/init.d,做为memcached的启动脚本

$ cp /u01/software/memcached-1.4.29/scripts/memcached.sysv  /etc/init.d/memcached
[root@hadoop1 bin]# vi /etc/init.d/memcached #! /bin/sh## chkconfig: - 55 45# description:  The memcached daemon is a network memory cache service.# processname: memcached# config: /etc/sysconfig/memcached# Source function library.. /etc/rc.d/init.d/functionsPORT=11211USER=nobodyMAXCONN=1024CACHESIZE=64OPTIONS=""if [ -f /etc/sysconfig/memcached ];then    . /etc/sysconfig/memcachedfi# Check that networking is up.if [ "$NETWORKING" = "no" ]then    exit 0fiRETVAL=0prog="memcached"start () {    echo -n $"Starting $prog: "    # insure that /var/run/memcached has proper permissions    chown $USER /var/run/memcached    daemon memcached -d -p $PORT -u $USER  -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS    RETVAL=$?    echo    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached}stop () {    echo -n $"Stopping $prog: "    killproc memcached    RETVAL=$?    echo    if [ $RETVAL -eq 0 ] ; then        rm -f /var/lock/subsys/memcached        rm -f /var/run/memcached/memcached.pid    fi}restart () {    stop    start}# See how we were called.case "$1" in    start)        start        ;;    stop)    stop    ;;    status)    status memcached    ;;    restart|reload)    restart    ;;    condrestart)    [ -f /var/lock/subsys/memcached ] && restart || :    ;;    *)    echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"    exit 1esacexit $?

修改下面这一句(其实就将memcached 命令指向咱们的全路径)

daemon memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS


daemon /usr/local/memcached/bin/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS


配置自启动

[root@hadoop1 bin]$ chkconfig memcached on[root@hadoop1 bin]$ chkconfig |grep memcachedmemcached       0:off   1:off   2:on    3:on    4:on    5:on    6:off


安装nc

[root@hadoop1 yum.repos.d]$ yum install nc


memcached 自带的stats命令,对搜索不太友好。为了很好的搜索,借助nc工具。

比如,想查找connection相关的参数

[root@hadoop1 yum.repos.d]# echo stats | nc 127.0.0.1 11211 |grep connectionSTAT curr_connections 10STAT total_connections 13STAT connection_structures 11

配合nc使用形式,个人参考网上资源,简单罗列下

watch "echo stats | nc 127.0.0.1 11211"printf "stats\r\n" | nc 127.0.0.1 11211echo stats | nc 127.0.0.1 11211

------------------------------------------------------------

The End

接下来,演练的内容是通过telnet命令行和JAVA 客户端工具,访问memcachd.

路径 成功 命令 工具 版本 资源 编译 个人 内存 参数 拷贝 指向 文件 方式 环境 用户 参考 搜索 演练 接下来 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技怎么样 A股互联网金融科技公司 重庆互联网络科技 互联网科技的英文 远拓互联网科技 小米互联网科技园设置 顶级互联网科技成果有哪些 互联网校园科技培训 互联网经济与金融科技 互联网科技与大数据专业 互联网科技和信息 晋城互联网科技 朱啸虎曾投资哪些互联网科技企业 恒生互联网科技业指数调整周期 广州燕处互联网科技有限公司 互联网硬科技公司 兰石爱特工业互联网科技分公司 保山互联网科技靠谱吗 数字科技和互联网金融哪个好 优雇互联网科技有限公司 科技金融是不是互联网金融 深圳互联网络科技有限公司 米客互联网科技 华中科技有哪些互联网大佬 上海电发互联网科技有限公司 互联网科技与大数据专业 哈尔滨屹滨互联网科技有限公司 宇信科技在杭州互联网排第几 互联网科技包装股份有限公司上市 现代互联网科技公司
0