docs: function MQ(redis, opts) {
    EventEmitter.call(this);
  
    this._Q = opts.Q ?
      _.isFunction(opts.Q) ? opts.Q : relyq[opts.Q] :
      relyq.RedisJsonQ;
    this._redis = redis;
    this._prefix = opts.prefix;
    this._delimeter = opts.delimeter || ':';
    this._opts = _.extend(opts, {
      allow_defer: false,
      allow_recur: false,
    });
    this._channels = [];
    this._queues = {};
  
    if (opts.ensureid === undefined || opts.ensureid) {
      var idfield = opts.idfield || 'id';
      opts.getid = function (task) {
        var id = task[idfield] = task[idfield] || uuid.v4();
        return id;
      };
    }
  
    this._memo_subscribers = decayingMemoizeBound(this._subscribers, this, opts.ttl || 5000)
  }