@Before public void init() { String[] servers = {"192.168.20.210:11211"}; Integer[] weights = {3}; SockIOPool pool = SockIOPool.getInstance(); pool.setServers(servers); // 服务器列表 pool.setWeights(weights); // 是上面服务器的权重,必须数量一致,否则权重无效 pool.setFailover(false); // 表示对于服务器出现问题时的自动修复,true如果连接失败会连到另外一台存在的服务器,为false时,如果连接失败会返回null pool.setInitConn(30); // 初始的时候连接数 pool.setMinConn(30); // 表示最小闲置连接数 pool.setMaxConn(50); // 最大连接数 pool.setMaxIdle(60000); // 最大空闲时间 pool.setMaintSleep(30000); // 表示是否需要延时结束 pool.setNagle(false); // Tcp的规则就是在发送一个包之前,本地机器会等待远程主机对上一次发送的包的确认信息到来; // 这个方法就可以关闭套接字的缓存,以至这个包准备好了就发; // pool.setAliveCheck(true); //表示心跳检查,确定服务器的状态 pool.setSocketTO(3000); // 是socket连接超时时间 pool.setSocketConnectTO(0); // 连接建立时阻塞时间 // pool.setFailback(failback); // 检测集群节点失效后,是否进行重试,true 重试 // pool.setHashingAlg(alg);//设置使用的hash算法 pool.setMaxBusyTime(30000); // 给线程池里面正在用的线程设立最大的占用时间 // pool.setAliveCheck(true); // mcc.setSanitizeKeys(sanitizeKeys)设置可否存入像url这样的特殊字符,false为可以 // mcc.setPrimitiveAsString(primitiveAsString) // 原本支持阻塞获取和可靠获取,并且将在存储的数据之前加上4个字节的flag(整型),因此可以支持存储任意可序列化类型。但是有一些应用只需要存储字符串类型和原生类型,这是为了在不同语言的client 之间保持可移植(如存储json数据),那么就不希望在数据之前加上这个flag,把这个值改成true就可疑了 pool.initialize(); // mcc.setCompressEnable(true);//超过指定大小的压缩 // mcc.setCompressThreshold(64 * 1024); //文件大小超过了这么大就压缩 }
@Override public void initialize(String name, String config) { super.initialize(name, config); /* * The config string format: <host>:<port>:<key_prefix> */ String[] part = config.split(":"); if (part.length != 3) { throw new IllegalArgumentException( "The config string" + config + " not match the format: <host>:<port>:<key_prefix>"); } try { String[] address = new String[] {part[0] + ":" + part[1]}; SockIOPool pool = SockIOPool.getInstance(part[0] + ":" + part[1]); pool.setServers(address); pool.setInitConn(1); pool.setMinConn(1); pool.setMaxConn(50); pool.setMaxIdle(1000 * 60 * 60 * 6); pool.setNagle(false); pool.setSocketTO(300); pool.setMaintSleep(30); pool.setSocketConnectTO(0); pool.initialize(); client = new MemCachedClient(part[0] + ":" + part[1]); prefix = part[2]; } catch (Throwable e) { e.printStackTrace(); throw new IllegalArgumentException( "Error while construct MemcachedClient, see stderr for stack detail. " + e.getMessage()); } }