_initSequence() {
    const config = JSON.parse(JSON.stringify(this._config));

    // Only way to connect to AWS ELastiCache
    // https://github.com/luin/ioredis#special-note-aws-elasticache-clusters-with-tls
    if (config.overrideDnsLookup) {
      config.clusterOptions.dnsLookup = (address, callback) =>
        callback(null, address);
    }

    if (config.nodes) {
      this.client = this._buildClusterClient({
        ...config.clusterOptions,
        redisOptions: config.options,
      });
    } else {
      this.client = this._buildClient(config.options);
    }

    this.client.on("ready", () => {
      this.connected = true;
    });

    this.client.on("error", (error) => {
      if (this.connected) {
        global.kuzzle.log.error(
          `Redis service seem to be down, see original error for more info:\n${error.message}`,
        );
      }
      this.connected = false;
    });

    this.setCommands();
    // TODO: Remove this when IORedis does support application level pings to keep connection to Azure Redis alive
    if (config.pingKeepAlive && config.pingKeepAlive > 0) {
      this._setupKeepAlive(config.pingKeepAlive);
    }

    return new Bluebird((resolve, reject) => {
      this.client.once("ready", async () => {
        await this.client.client(
          "SETNAME",
          `${this.adapterName}/${global.kuzzle.id}`,
        );
        resolve();
      });

      this.client.once("error", (error) => {
        reject(error);
      });
    });
  }
Initialize the redis client, select the service associated database and
flush it to make sure we start from a clean state

@returns {Promise}