code: private void subscribeRedis(final String redisHost, final int redisPort, final String serverUrl) {
          if (null == redisHost || redisPort < 1) {
              LOGGER.error("没有指定redis服务器配置!");
              return;
          }
          Thread thread = new Thread(new Runnable() {
              @Override
              public void run() {
                  String channel = "pr";
                  LOGGER.info("redis服务器配置信息 host:" + redisHost + ",port:" + redisPort + ",channel:" + channel);
                  while (true) {
                      try {
                          JedisPool jedisPool = new JedisPool(new JedisPoolConfig(), redisHost, redisPort);
                          Jedis jedis = jedisPool.getResource();
                          LOGGER.info("redis守护线程启动");
                          jedis.subscribe(new ExtractRegularChangeRedisListener(serverUrl), new String[]{channel});
                          jedisPool.returnResource(jedis);
                          LOGGER.info("redis守护线程结束");
                          break;
                      } catch (Exception e) {
                          LOGGER.info("redis未启动，暂停一分钟后重新连接");
                          try {
                              Thread.sleep(600000);
                          } catch (InterruptedException ex) {
                              LOGGER.error(ex.getMessage(), ex);
                          }
                      }
                  }
              }
          });
          thread.setDaemon(true);
          thread.setName("redis守护线程，用于动态加载抽取规则");
          thread.start();
      }
docs: 订阅Redis服务器Channel：pr，当规则改变的时候会收到通知消息CHANGE并重新初始化规则集合