async searchKeys(pattern) {
    if (this.client instanceof IORedis.Cluster) {
      const keys = await Bluebird.map(this.client.nodes("master"), (node) => {
        return this._searchNodeKeys(node, pattern);
      });

      return uniq(flatten(keys));
    }

    return this._searchNodeKeys(this.client, pattern);
  }
Returns all the keys matching a given pattern.

/!\ We don't use `keys` to avoid blocking Redis if using a big dataset
cf: http://redis.io/commands/keys
    and http://redis.io/commands/scan

@param pattern
@returns {Promise.<string[]>} promise resolving to an array of keys