public AbstractRedisRegistry(URL url) { super(url); RedisRegistryUtil.assertNotAnyHost(url); GenericObjectPoolConfig config = RedisRegistryUtil.genericObjectPoolConfig(url); List<String> addresses = RedisRegistryUtil.getAddresses(url); for (String address : addresses) { JedisPool jedisPool = RedisRegistryUtil.initJedisPoolAndCheck(url, config, address); jedisPools.put(address, jedisPool); } this.replicate = RedisRegistryUtil.getReplicate(url); this.reconnectPeriod = url.getParameter( Constants.REGISTRY_RECONNECT_PERIOD_KEY, Constants.DEFAULT_REGISTRY_RECONNECT_PERIOD); this.root = RedisRegistryUtil.getGroup(url); this.expirePeriod = url.getParameter(Constants.SESSION_TIMEOUT_KEY, Constants.DEFAULT_SESSION_TIMEOUT); this.expireFuture = expireExecutor.scheduleWithFixedDelay( new Runnable() { public void run() { try { deferExpired(); // 延长过期时间 } catch (Throwable t) { // 防御性容错 logger.error( "Unexpected exception occur at defer expire time, cause: " + t.getMessage(), t); } } }, expirePeriod / 2, expirePeriod / 2, TimeUnit.MILLISECONDS); }