public Memcache createMemcacheClient() throws Exception { String poolName = getPoolName(); // grab an instance of our connection pool SockIOPool pool = SockIOPool.getInstance(poolName); // set the servers and the weights pool.setServers(getServers()); pool.setWeights(getWeights()); // set some basic pool settings pool.setInitConn(getInitConn()); pool.setMinConn(getMinConn()); pool.setMaxConn(getMaxConn()); pool.setMaxIdle(getMaxIdle()); // set the sleep for the maint thread // it will wake up every x seconds and // maintain the pool size pool.setMaintSleep(getMaintSleep()); // set some TCP settings pool.setNagle(false); pool.setSocketTO(getSocketTimeout()); pool.setSocketConnectTO(getSocketConnectTimeout()); // initialize the connection pool pool.initialize(); MemCachedClient client = new MemCachedClient(getClassLoader(), getErrorHandler(), poolName); client.setCompressEnable(isCompressEnable()); client.setDefaultEncoding(getDefaultEncoding()); return new DangaMemcache(client, poolName); }
// 设置与缓存服务器的连接池 static { String server1 = Config.getCacheServer(); // 服务器列表和其权重 String[] servers = {server1}; // String[] servers = {"10.6.12.147:11211" }; // String[] servers = {"192.168.8.129:11211" }; Integer[] weights = {3}; // 获取socke连接池的实例对象 SockIOPool pool = SockIOPool.getInstance(); // 设置服务器信息 pool.setServers(servers); pool.setWeights(weights); // 设置初始连接数、最小和最大连接数以及最大处理时间 pool.setInitConn(5); pool.setMinConn(5); pool.setMaxConn(250); pool.setMaxIdle(1000 * 60 * 60 * 6); // 设置主线程的睡眠时间 pool.setMaintSleep(30); // 设置TCP的参数,连接超时等 pool.setNagle(false); pool.setSocketTO(3000); pool.setSocketConnectTO(0); // 初始化连接池 pool.initialize(); // 压缩设置,超过指定大小(单位为K)的数据都会被压缩 // mcc.setCompressEnable(true); // mcc.setCompressThreshold(64 * 1024); }