memcached 安装

下载安装包

下载libevent

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

下载memcached

wget https://memcached.org/files/memcached-1.5.20.tar.gz

编译安装

安装libevent

tar -zxvf libevent-2.1.11-stable.tar.gz cd libevent-2.1.11-stable #./configure --prefix=/usr/local/libevent 指定安装路径 ./configure make make install

安装memcached

tar -zxvf memcached-1.5.20.tar.gz cd memcached-1.5.20 #./configure --prefix=/usr/local/memcached 指定安装路径 ./configure --with-libevent=../libevent-2.1.11-stable make make install

启动

/usr/local/bin/memcached -d -m 256 -u root -p 11211 -c 1024 -P /tmp/memcached.pid

启动参数

启动参数: -d选项是启动一个守护进程 -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB -u是运行Memcache的用户,我们这里是root -l是监听的服务器IP地址 -p(小写字母)是设置Memcache监听的端口,我们这里设置11211默认端口,最好是1024以上的端口 -c选项是最大运行的并发连接数,默认是1024,我们这里设置了256,按照服务器的负载量来设定 -P(大写字母)是设置保存Memcache的pid文件,我们这里是保存在 /tmp/memcached.pid

可能出现的问题

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

提示找不到libevent-xxxx
原因一:缺少libevent-xxxx文件,没有安装libevent
原因二:程序按照默认路径没有找到该文件

首先 ldd /usr/local/bin/memcached 查看依赖

ldd /usr/local/bin/memcached linux-vdso.so.1 => (0x00007fff5fd43000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa58d41f000) libevent-2.1.so.6 => not found #(没有找到该文件) libc.so.6 => /lib64/libc.so.6 (0x00007fa58ce09000) /lib64/ld-linux-x86-64.so.2 (0x00007fa58d641000)

可以看到没有找到libevent-xxx文件

使用 ‘find / -name libevent-2.1.so.6’ 查找该文件是否存在

[root@centos lib64]# find / -name libevent-2.1.so.6 /usr/local/lib/libevent-2.1.so.6

可以看到该文件在/usr/local/lib/目录下

LD_DEBUG=libs /usr/local/bin/memcached -v 查看程序的默认查找路径


可以看到这里默认的查找路径有很多,在 /lib64/xxx 中,随便选择其中一个路径,利用软连接将libevent-xxx文件链接过去
ln -s /usr/local/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.0.so.6

再执行ldd /usr/local/bin/memcached

ldd /usr/local/bin/memcached linux-vdso.so.1 => (0x00007fff35dfa000) libevent-2.1.so.6 => /lib64/libevent-2.1.so.6 (0x00007f78d2c8b000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f78d2a6f000) libc.so.6 => /lib64/libc.so.6 (0x00007f78d26a1000) libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f78d223e000) /lib64/ld-linux-x86-64.so.2 (0x00007f78d2edf000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f78d203a000) libz.so.1 => /lib64/libz.so.1 (0x00007f78d1e24000)

发现依赖都是OK的,重启执行启动命令

关闭memcached

#查看进程 ps -ef|grep memcached #杀掉进程 kill -9 pid