golang 使用rate实现redis qps令牌桶限流

参考: https://www.cnblogs.com/jackey2015/p/11843626.html

 import "golang.org/x/time/rate"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
func newLimiter() *rate.Limiter{
    limit := rate.Every(10 * time.Microsecond)
    limiter := rate.NewLimiter(limit, 1)
    return limiter
}
func xiaofeiToken(limiter *rate.Limiter) {
    ok := limiter.Allow()
    if !ok {
        fmt.Println("限流ing")
    }else {
        fmt.Println("获得令牌",time.Now())
    }
}
func TestLimiter(t *testing.T) {
    limiter := newLimiter()
    for i:=0;i<100;i++ {
        xiaofeiToken(limiter)
        time.Sleep(50*time.Millisecond)
    }
    time.Sleep(2000*time.Millisecond)
    fmt.Println("第二春")
    for j:=0;j<100;j++ {
        fmt.Println(j)
        go xiaofeiToken(limiter)
        //time.Sleep(50*time.Millisecond)
    }
}

  

posted @   zipon  阅读(1026)  评论(0编辑  收藏  举报
编辑推荐:
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
阅读排行:
· DeepSeek+PageAssist实现本地大模型联网
· 手把手教你更优雅的享受 DeepSeek
· 腾讯元宝接入 DeepSeek R1 模型,支持深度思考 + 联网搜索,好用不卡机!
· 从 14 秒到 1 秒:MySQL DDL 性能优化实战
· AI工具推荐:领先的开源 AI 代码助手——Continue
历史上的今天:
2016-12-03 BS4(BeautifulSoup4)的使用--find_all()篇
点击右上角即可分享
微信分享提示