func HasQuota(rc *redis.Client, ipkey *string) (bool, error) { if ns, err := rc.Get(*ipkey); err != nil { return false, err } else if ns == "" { if err := rc.Set(*ipkey, "1"); err != nil { return false, err } rc.Expire(*ipkey, conf.Limit.Expire) } else if n, _ := strconv.Atoi(ns); n < conf.Limit.MaxRequests { rc.Incr(*ipkey) } else { return false, nil } return true, nil }