官网: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!
....
运行 成功!