Skip to content

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哦。

基于 MIT 许可发布