提交 ddcbca28 authored 作者: mooncake9527's avatar mooncake9527

ip rate limiter

上级 ffc10919
......@@ -281,8 +281,8 @@ type IPRateLimiter struct {
}
type RateLimiterStore struct {
Type string `yaml:"redis" json:"redis"`
Dsn string `yaml:"dsn" json:"dsn"`
Type string `yaml:"type" json:"type"`
Redis Redis `yaml:"redis" json:"redis"`
}
func (x IPRateLimiter) Get() (time.Duration, int) {
......
......@@ -93,7 +93,14 @@ func New() *gin.Engine {
}
if app.IPRateLimiter.Type == "sync" {
if app.IPRateLimiter.Store.Type == "redis" {
redisCli, err := goredis.Init(app.IPRateLimiter.Store.Dsn, goredis.WithLogger(logger.Get()))
redisConf := app.IPRateLimiter.Store.Redis
opts := []goredis.Option{
goredis.WithLogger(logger.Get()),
goredis.WithDialTimeout(time.Duration(redisConf.DialTimeout) * time.Second),
goredis.WithReadTimeout(time.Duration(redisConf.ReadTimeout) * time.Second),
goredis.WithWriteTimeout(time.Duration(redisConf.WriteTimeout) * time.Second),
}
redisCli, err := goredis.Init(redisConf.Dsn, opts...)
if err != nil {
logger.Fatal("init redis error: " + err.Error())
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论