public static net.spy.memcached.MemcachedClient createSpyMemcachedClient(MemcacheConfig config) { try { ConnectionFactoryBuilder factoryBuilder = new ConnectionFactoryBuilder(); net.spy.memcached.transcoders.SerializingTranscoder transcoder = new net.spy.memcached.transcoders.SerializingTranscoder(); transcoder.setCompressionThreshold(config.getCompressionThreshold()); factoryBuilder.setProtocol(ConnectionFactoryBuilder.Protocol.BINARY); factoryBuilder.setTranscoder(transcoder); factoryBuilder.setOpTimeout(config.getOpTimeout()); factoryBuilder.setTimeoutExceptionThreshold(5); factoryBuilder.setLocatorType(ConnectionFactoryBuilder.Locator.CONSISTENT); factoryBuilder.setFailureMode(FailureMode.Redistribute); factoryBuilder.setUseNagleAlgorithm(false); factoryBuilder.setHashAlg(DefaultHashAlgorithm.KETAMA_HASH); return new net.spy.memcached.MemcachedClient( factoryBuilder.build(), AddrUtil.getAddresses(config.getServers())); } catch (Exception ex) { log.error("Failed to create SpyMemcachedClient", ex); } return null; }
@Override public void afterPropertiesSet() throws Exception { if (!inited && enable) { try { ConnectionFactoryBuilder cfBuidler = new ConnectionFactoryBuilder(); cfBuidler.setProtocol(Protocol.BINARY); cfBuidler.setOpTimeout(3000); cfBuidler.setTimeoutExceptionThreshold(3000); if (auth) { cfBuidler.setAuthDescriptor( new AuthDescriptor( new String[] {"PLAIN"}, new PlainCallbackHandler(username, password))); } client = new MemcachedClient(cfBuidler.build(), AddrUtil.getAddresses(host + ":" + port)); inited = true; logger.info("Memcached Client inited..."); } catch (IOException e) { logger.error("Memcached client initial exception:", e); e.printStackTrace(); } } }