set(key, data, ttl) {
		this.metrics.increment(METRIC.MOLECULER_CACHER_SET_TOTAL);
		const timeEnd = this.metrics.timer(METRIC.MOLECULER_CACHER_SET_TIME);

		data = this.serializer.serialize(data);
		this.logger.debug(`SET ${key}`);

		if (ttl == null) ttl = this.opts.ttl;

		let p;
		if (ttl) {
			p = this.client.set(this.prefix + key, data, "EX", ttl);
		} else {
			p = this.client.set(this.prefix + key, data);
		}

		return p
			.then(res => {
				timeEnd();
				return res;
			})
			.catch(err => {
				timeEnd();
				throw err;
			});
	}
Save data to cache by key

@param {String} key
@param {any} data JSON object
@param {Number} ttl Optional Time-to-Live
@returns {Promise}

@memberof Cacher