33 lines
587 B
Go
33 lines
587 B
Go
package model
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/redis/go-redis/v9"
|
|
)
|
|
|
|
var RDB *redis.Client
|
|
|
|
// 连接到 redis
|
|
func ConnectToRedis(dsn string) *redis.Client {
|
|
opt, err := redis.ParseURL(dsn)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
rdb := redis.NewClient(opt)
|
|
RDB = rdb
|
|
return rdb
|
|
}
|
|
|
|
func RedisRemember(key string, timeout int, funct func() interface{}) string {
|
|
ctx := context.Background()
|
|
if RDB.Exists(ctx, key).Val() == 0 {
|
|
data := funct()
|
|
RDB.Set(ctx, key, data, time.Duration(timeout)*time.Second)
|
|
return RDB.Get(ctx, key).Val()
|
|
}
|
|
return RDB.Get(ctx, key).Val()
|
|
}
|