go-redis

go-zero 如何扛住流量冲击(二)

让人想犯罪 __ 提交于 2020-11-26 15:00:06
本篇文章承接上一篇go-zero 如何扛住流量冲击(一)。 上一篇介绍的是 go-zero 中滑动窗口限流,本篇介绍另外一个 tokenlimit ,令牌桶限流。 使用 const ( burst = 100 rate = 100 seconds = 5 ) store := redis.NewRedis("localhost:6379", "node", "") fmt.Println(store.Ping()) // New tokenLimiter limiter := limit.NewTokenLimiter(rate, burst, store, "rate-test") timer := time.NewTimer(time.Second * seconds) quit := make(chan struct{}) defer timer.Stop() go func() { <-timer.C close(quit) }() var allowed, denied int32 var wait sync.WaitGroup for i := 0; i < runtime.NumCPU(); i++ { wait.Add(1) go func() { for { select { case <-quit: wait.Done() return default: if

Golang学习系列第七天:操作Redis

天涯浪子 提交于 2020-08-05 13:07:23
0 redis安装请参考 Redis备忘录 1. golang操作redis 切换到golang工作目录,新建项目redis,然后建立连接redis的文件 [root@master src] # pwd /dongguangming/goworkspace/src [root@master src] # mkdir redis [root@master src] # cd redis/ [root@master redis] # touch redis-conn.go 编辑redis-conn.go文件 ,即 [root@master redis]# vi redis-conn.go 键入以下代码 package main import ( "fmt" "github.com/go-redis/redis" ) func main () { fmt.Println( "golang连接redis") client := redis.NewClient(&redis.Options{ Addr: "192.168.8.200:6379", Password: "123456", DB: 0, }) pong, err := client.Ping().Result() fmt.Println(pong, err) } 执行以上程序 [root@master redis]# go