Redis
Redis的使用非常简单,核心代码如下:
go
type Repository struct {
db *gorm.DB
}
func NewRedis(conf *viper.Viper) *redis.Client {
rdb := redis.NewClient(&redis.Options{
Addr: conf.GetString("data.redis.addr"),
Password: conf.GetString("data.redis.password"),
DB: conf.GetInt("data.redis.db"),
})
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
_, err := rdb.Ping(ctx).Result()
if err != nil {
panic(fmt.Sprintf("redis error: %s", err.Error()))
}
return rdb
}
go
var repositorySet = wire.NewSet(
repository.NewRedis,
}
go
func NewUserRepository(repository *Repository) CaptchaRepository {
return &useraRepository{
Repository: repository,
}
}
const KeyCaptcha = "Token:%d"
func (r *captchaRepository) SetToken(ctx context.Context, account, token string) error {
return r.rdb.Set(ctx, fmt.Sprintf(account, token), code, 15*time.Minute).Err()
}
我们首先在repository/repository.go
定义redis的初始化函数,然后通过wire.go
声明依赖注入,最后在repository/user.go
中实现具体的操作即可。
TIP
每次修改完wire.go
,都需要执行nunu wire
命令,重新编译wire哦。