linux 在64位安装memcached问题解决

1.安装memcached所依赖的libevent官网:http://libevent.org/解压源码包至/usr/local,进入解压后的目录,执行:./configuremakemake install

configure文件中的默认prefix是/usr/local,因此,安装完成之后,你可以在/usr/local/bin 和 /usr/local/lib 下找到libevent的相关文件

2.安装memcached官网:http://code.google.com/p/memcached/解压源码包至/usr/local,进入解压后的目录,执行:./configuremakemake installconfigure文件中的默认prefix也是/usr/local,因此,安装完成之后,你可以在/usr/local/bin 和 /usr/local/lib 下找到memcached的相关文件3.解决:memcached: error while loading shared libraries: libevent-2.0.so.5 错误

当安装完成后,启动程序memcached -m 128 -l 10.250.2.18 -p 11211却发现报错:

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

解决办法:执行命令ldd /usr/local/bin/memcached

[root@localhost memcached-1.4.15]# ldd /usr/local/bin/memcachedlinux-vdso.so.1 => (0x00007fff04b24000)libhugetlbfs.so => /usr/lib64/libhugetlbfs.so (0x00007f1458609000)libevent-2.0.so.5 => /usr/lib64/libevent-2.0.so.5 (0x00007f14583c4000)librt.so.1 => /lib64/librt.so.1 (0x000000384e600000)libpthread.so.0 => /lib64/libpthread.so.0 (0x000000384da00000)libc.so.6 => /lib64/libc.so.6 (0x000000384d600000)libdl.so.2 => /lib64/libdl.so.2 (0x000000384d200000)/lib64/ld-linux-x86-64.so.2 (0x000000384ce00000)[root@localhost memcached-1.4.15]#

发现64位下加载的目录为/usr/lib64/,我们已经知道当前安装的程序路径为/usr/local/lib/libevent-2.0.so.5.1.9故执行命令

ln -s /usr/local/lib/libevent-2.0.so.5.1.9 /usr/lib64/libevent-2.0.so.5 即可正常启动了

memcached -m 128 -l 10.250.2.18 -p 11211

参数说明: -d 启动守护进程(后台运行) -m 分配给memcache使用的内存,单位是MB -u 运行memcached的用户 -l 监听的服务器IP -p 监听的服务器端口,默认是11211 -c 最大运行的并发连接数,默认是1024 -P(大写) 保存Memcache的pid文件,后面跟路径

4.检查安装情况

下载java-memcached-2.5.1.jar,编写测试程序:

import com.danga.MemCached.MemCachedClient;import com.danga.MemCached.SockIOPool;public class TestMemcached { public static void main(String[] args) { /** 初始化SockIOPool,管理memcached的连接池 **/ String[] servers = { "10.250.2.18:11211" };// 主机10.250.2.18,端口11211 SockIOPool pool = SockIOPool.getInstance(); pool.setServers(servers); pool.setFailover(true); pool.setInitConn(10); pool.setMinConn(5); pool.setMaxConn(250); pool.setMaintSleep(30); pool.setNagle(false); pool.setSocketTO(3000); pool.setAliveCheck(true); pool.initialize(); /** 建立MemcachedClient实例 **/ MemCachedClient memCachedClient = new MemCachedClient(); for (int i = 0; i < 10; i++) { /** 将对象加入到memcached缓存 **/ boolean success = memCachedClient.set("" + i, "Hello!"); /** 从memcached缓存中按key值取对象 **/ String result = (String) memCachedClient.get("" + i); System.out.println(String.format("set( %d ): %s", i, success)); System.out.println(String.format("get( %d ): %s", i, result)); } }}

运行 结果:

com.schooner.MemCached.SchoonerSockIOPool Fri Jun 14 16:00:32 CST 2013 – ++++ failed to get SockIO obj for: 10.250.2.18:11211set( 0 ): falseget( 0 ): null

连接 失败,原来是新装的linux上没有关闭iptables使用 service iptables stop

[root@localhost ~]# service iptables stopiptables:清除防火墙规则: [确定]iptables:将链设置为政策 ACCEPT:filter [确定]iptables:正在卸载模块: [确定][root@localhost ~]#

再次运行:

set( 0 ): trueget( 0 ): Hello!set( 1 ): trueget( 1 ): Hello!

….

运行 成功!

有我们特有的记忆,亲情之忆友谊之花爱情之树以及遗憾之泪!

linux 在64位安装memcached问题解决

相关文章:

你感兴趣的文章:

标签云: