本文主要介绍Linux下,下载源代码通过源码编译安装和配置Memcached,以相关操作的命令。

1、Memcached简介

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

2、安装libevent

相关文档http://libevent.org/

memcached依赖于libevent API,安装Memcached之前需要先安装libevent。可以使用rpm -q libevent查看是否已经安装。

wget https://cloud.github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz
tar -zxvf libevent-2.0.20-stable.tar.gz
cd libevent-2.0.20
./configure --prefix=/usr/local/libevent
make && make install
echo "/usr/local/libevent/lib" > /etc/ld.so.conf.d/libevent.conf
ldconfig

3、安装配置memcached

相关文档:https://www.memcached.org/

1)安装memcached

wget -O /usr/src/memcached-1.4.34.tar.gz https://www.memcached.org/files/memcached-1.4.34.tar.gz
tar -zxvf memcached-1.4.15.tar.gz
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent --enable-sasl 
make && make install

注意:

--enable-sasl 选项是启用sasl认证,由于memcached默认不支持认证,所以私密数据会存在安全隐患,开启sasl认证后,memcached可以使用sasl进行认证。如有需要可以开启此选项

但开启sasl之前要确保cyrus-sasl-devel的开发库是否已经安装,命令如下;

rpm -qa | grep sasl
yum list all | grep sasl
yum install -y cyrus-sasl-devel

2)配置memcached服务

添加/etc/init.d/memcached文件,内容如下:

#!/bin/bash
#
# Init file for memcached
#
# chkconfig: - 86 14
# description: Distributed memory caching daemon
#
# processname: memcached
# config: /etc/sysconfig/memcached
. /etc/rc.d/init.d/functions
## Default variables
PORT="11211"
USER="nobody"
MAXCONN="1024"  
CACHESIZE="64"
OPTIONS=""
[ -f /etc/sysconfig/memcached ] && . /etc/sysconfig/memcached
RETVAL=0
prog="/usr/local/memcached/bin/memcached"
desc="Distributed memory caching"
lockfile="/var/lock/subsys/memcached"
start() {
        echo -n $"Starting $desc (memcached): "
        daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE "$OPTIONS"  #启动失败,去掉-o
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch $lockfile
        return $RETVAL
}
stop() {
        echo -n $"Shutting down $desc (memcached): "
        killproc $prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f $lockfile
        return $RETVAL
}
restart() {
        stop
        start
}
reload() {
        echo -n $"Reloading $desc ($prog): "
        killproc $prog -HUP
        RETVAL=$?
        echo
        return $RETVAL
}
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  condrestart)
        [ -e $lockfile ] && restart
        RETVAL=$?
        ;;       
  reload)
        reload
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
   *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        RETVAL=1
esac
exit $RETVAL

配置命令:

chmod +x /etc/init.d/memcached
chkconfig --add memcached
chkconfig memcached on
service memcached start

4、memcached启动命令选项

/usr/local/memcached/bin/memcached -d -c 1024 -m 128 -n 20 -f 1.25 -u nobody

参数选项:

选项

描述

-l

指定进程监听的地址;

-d

以服务模式运行;

-u

以指定的用户身份运行memcached进程;

-m

用于缓存数据的最大内存空间,单位为MB,默认为64MB;

-c

最大支持的并发连接数,默认为1024;

-p

指定监听的TCP端口,默认为11211;

-U

指定监听的UDP端口,默认为11211,0表示关闭UDP端口;

-t

用于处理入站请求的最大线程数,仅在memcached编译时开启了支持线程才有效;

-f

设定Slab Allocator定义预先分配内存空间大小固定的块时使用的增长因子;

-M

当内存空间不够使用时返回错误信息,而不是按LRU算法利用空间;

-n

指定最小的slab chunk大小;单位是字节;

-S

启用sasl进行用户认证;

-v

显示详细信息

-vv

显示更加详尽的信息

推荐文档