千家信息网

memcached演练(1) 搭建memcached服务

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,memcached已经火了好多年了,现在网上关于memcached的资源相当多了,我就不浪费话语了。干脆写一个实战系列,坚持一切用实施说话。环境介绍Linux虚拟机内核信息[root@hadoop1
千家信息网最后更新 2025年12月02日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安全错误 数据库的锁怎样保障安全 戴尔服务器如何装固态硬盘 吉林电力时钟同步服务器 软件开发与算法的区别 海阳微信小程序软件开发哪家好 石家庄点网络技术有限公司 秦皇岛萨利网络技术 数据库原理及应用电子工业 win7网络安全模式分辨率 食品安全现状评价数据库 破坏网络安全信息 我的世界服务器推荐招募管理 服务器主板上会有哪些接口和卡槽 深圳商城软件开发大概多少钱 软件开发西安待遇 每个数据库的sql语句 股票配资策略软件开发广州 软件开发控制软件 世界卫生组织有没有传染病数据库 数据库查询结果如何算平均分 下列不是网络安全相关法律法规 浙江前端软件开发怎么样 哪些大学开网络技术 济南电脑软件开发流程 石家庄热巢网络技术 网上学软件开发视频 熊居网络技术有限公司 比较常见软件开发模型 争做小卫士-网络安全文明 上海综合软件开发发展现状 网络安全产业园 海淀
0