linux 在64位安装memcached问题解决

1.安装memcached所依赖的libevent

官网:http://libevent.org/

解压源码包至/usr/local,进入解压后的目录,执行:
./configure
make
make install

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

2.安装memcached

官网:http://code.google.com/p/memcached/

解压源码包至/usr/local,进入解压后的目录,执行:
./configure
make
make install
configure文件中的默认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/memcached
linux-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:11211
set( 0 ): false
get( 0 ): null

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

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

再次运行:

set( 0 ): true
get( 0 ): Hello!
set( 1 ): true
get( 1 ): Hello!

....

运行 成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值