function resolve(opt) {
	if (isObject(opt) && isInheritedClass(opt, Cachers.Base)) {
		return opt;
	} else if (opt === true) {
		return new Cachers.Memory();
	} else if (isString(opt)) {
		let CacherClass = getByName(opt);
		if (CacherClass) return new CacherClass();

		if (opt.startsWith("redis://") || opt.startsWith("rediss://")) CacherClass = Cachers.Redis;

		if (CacherClass) return new CacherClass(opt);
		else throw new BrokerOptionsError(`Invalid cacher type '${opt}'.`, { type: opt });
	} else if (isObject(opt)) {
		let CacherClass = getByName(opt.type || "Memory");
		if (CacherClass) return new CacherClass(opt.options);
		else throw new BrokerOptionsError(`Invalid cacher type '${opt.type}'.`, { type: opt.type });
	}

	return null;
}
Resolve cacher by name

@param {object|string} opt
@returns {Cacher}