mirror of
https://github.com/bufanyun/hotgo.git
synced 2025-02-03 02:54:41 +08:00
84 lines
1.8 KiB
Go
84 lines
1.8 KiB
Go
//
|
||
// @Link https://github.com/bufanyun/hotgo
|
||
// @Copyright Copyright (c) 2022 HotGo CLI
|
||
// @Author Ms <133814250@qq.com>
|
||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||
//
|
||
package com
|
||
|
||
import (
|
||
"context"
|
||
"github.com/gogf/gf/v2/container/gvar"
|
||
"github.com/gogf/gf/v2/database/gredis"
|
||
"github.com/gogf/gf/v2/errors/gerror"
|
||
"github.com/gogf/gf/v2/frame/g"
|
||
"github.com/gogf/gf/v2/util/gconv"
|
||
)
|
||
|
||
var Redis = new(redis)
|
||
|
||
type redis struct{}
|
||
|
||
//
|
||
// @Title 实例化redis
|
||
// @Description
|
||
// @Author Ms <133814250@qq.com>
|
||
// @Param name
|
||
// @Return *gredis.Redis
|
||
//
|
||
func (component *redis) Instance(name ...string) *gredis.Redis {
|
||
return g.Redis(name...)
|
||
}
|
||
|
||
//
|
||
// @Title 获取
|
||
// @Description
|
||
// @Author Ms <133814250@qq.com>
|
||
// @Param ctx
|
||
// @Param key
|
||
// @Return *gvar.Var
|
||
// @Return error
|
||
//
|
||
func (component *redis) Get(ctx context.Context, key string) (*gvar.Var, error) {
|
||
data, err := Redis.Instance().Do(ctx, "GET", key)
|
||
if err != nil {
|
||
err := gerror.New(err.Error())
|
||
return nil, err
|
||
}
|
||
|
||
return data, nil
|
||
}
|
||
|
||
//
|
||
// @Title 设置
|
||
// @Description
|
||
// @Author Ms <133814250@qq.com>
|
||
// @Param ctx
|
||
// @Param key
|
||
// @Param value
|
||
// @Param expire
|
||
// @Return *gvar.Var
|
||
// @Return error
|
||
//
|
||
func (component *redis) Set(ctx context.Context, key string, value string, expire interface{}) (*gvar.Var, error) {
|
||
|
||
redisInstance := Redis.Instance()
|
||
response, err := redisInstance.Do(ctx, "SET", key, value)
|
||
if err != nil {
|
||
err := gerror.New(err.Error())
|
||
return nil, err
|
||
}
|
||
|
||
exp := gconv.Int(expire)
|
||
// TODO 设置有效期
|
||
if exp > 0 {
|
||
_, err = redisInstance.Do(ctx, "EXPIRE", key, exp)
|
||
if err != nil {
|
||
err := gerror.New(err.Error())
|
||
return nil, err
|
||
}
|
||
}
|
||
|
||
return response, nil
|
||
}
|