这段时间,在网上研究Memcached内存数据库,发现基于Memcached集群的java客户端连接相关的资料还是有点少,
决心研究一下怎么使用Memcached Java Client连接Memcached集群环境之后,写这篇文章:
真是惨,连接好之后,发现其实网上说的没错,原来是我自己搭集群环境的时候,因为是测试,所以写IP的时候写了本机IP:127.0.0.1!!!
直接导致客户端无法连接上我的实际IP:200.31.155.116:12001,然后还找不到原因!
搭建集群环境参考网址:
http://www.2cto.com/os/201506/406932.html
看来还是搭建环境的时候本机IP还是不能随便写,会忽略这个问题,java client代码copy的如下:
[java] view plain copy print?
import java.util.Date;
import com.danga.MemCached.*;
public class MemcacheManagerForGwhalin {
// 构建缓存客户端
private static MemCachedClient cachedClient;
// 单例模式实现客户端管理类
private static MemcacheManagerForGwhalin INSTANCE = new MemcacheManagerForGwhalin();
private MemcacheManagerForGwhalin() {
cachedClient = new MemCachedClient();
// 初始化SockIOPool,管理memcached的连接池
SockIOPool pool = SockIOPool.getInstance();
// 设置缓存服务器列表,当使用分布式缓存的时,可以指定多个缓存服务器。(这里应该设置为多个不同的服务器)
String[] servers = { "192.168.163.10:11211", "192.168.163.11:11211"
// 也可以使用域名 "server3.mydomain.com:1624"
};
pool.setServers(servers);
pool.setFailover(true);
pool.setInitConn(10); // 设置初始连接
pool.setMinConn(5);// 设置最小连接
pool.setMaxConn(250); // 设置最大连接
pool.setMaxIdle(1000 * 60 * 60 * 3); // 设置每个连接最大空闲时间3个小时
pool.setMaintSleep(30);
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setAliveCheck(true);
pool.initialize();
}
/**
* 获取缓存管理器唯一实例
*
* @return
*/
public static MemcacheManagerForGwhalin getInstance() {
return INSTANCE;
}
public void add(String key, Object value) {
cachedClient.set(key, value);
}
public void add(String key, Object value, int milliseconds) {
cachedClient.set(key, value, milliseconds);
}
public void remove(String key) {
cachedClient.delete(key);
}
public void remove(String key, int milliseconds) {
cachedClient.delete(key, milliseconds, new Date());
}
public void update(String key, Object value, int milliseconds) {
cachedClient.replace(key, value, milliseconds);
}
public void update(String key, Object value) {
cachedClient.replace(key, value);
}
public Object get(String key) {
return cachedClient.get(key);
}
public static void main(String[] args) {
//将对象加入到memcached缓存
cachedClient.add("keke", "This is a test String");
//从memcached缓存中按key值取对象
String result = (String) cachedClient.get("keke");
System.out.println(result);
}
}