const (

    tpsBucketToken = "TpsTokenBucket"

)

 

type tpsToken struct{}

 

// NewTpsToken 控制mysql tps

func NewTpsToken() *tpsToken {

    return &tpsToken{}

}

 

func (t *tpsToken) InitTokenBucket(key string, cnt int) error {

    globalRedis.Del(key)

    for i := 1; i <= cnt; i++ {

        _, err := globalRedis.SAdd(key, i).Result()

        if err != nil {

            return err

        }

    }

    return nil

}

 

func (t *tpsToken) GetToken(key string) string {

    token, err := globalRedis.SPop(key).Result()

    if err == nil && token != "" {

        return token

    }

    return ""

}

func (t *tpsToken) ReleaseToken(key, token string) (err error) {

    _, err = globalRedis.SAdd(key, token).Result()

    return

}

golang redis 令牌桶

相关文章:

  • 2021-08-11
  • 2021-12-08
  • 2021-12-27
  • 2023-03-30
  • 2021-06-09
  • 2021-08-17
  • 2021-04-20
猜你喜欢
  • 2021-11-05
  • 2021-12-30
  • 2021-08-29
  • 2022-12-23
  • 2021-09-23
  • 2021-05-11
  • 2022-12-23
相关资源
相似解决方案