86 lines
1.9 KiB
Go
86 lines
1.9 KiB
Go
package vidmod
|
|
|
|
import (
|
|
"91porn-server/app/appg"
|
|
"91porn-server/common/constant/redisconst"
|
|
"91porn-server/common/log"
|
|
"91porn-server/common/redis"
|
|
"errors"
|
|
"fmt"
|
|
|
|
"github.com/vmihailenco/msgpack/v5"
|
|
)
|
|
|
|
func getRedis() *redis.Client {
|
|
return appg.Redis
|
|
}
|
|
|
|
// GetByIDFromRedis 根据id获取一条记录
|
|
func GetByIDFromRedis(id string) (vid VideoModel, err error) {
|
|
redisKey := redisconst.DataCachKey(table, id)
|
|
redisc := getRedis()
|
|
if redisc == nil || !redisc.Exists(redisKey) {
|
|
vid, err = GetVideoInfo(id)
|
|
if err != nil {
|
|
log.Warn(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "GetByID", table, "FindOne", err), log.Any("id", id))
|
|
}
|
|
if err != nil {
|
|
return
|
|
}
|
|
if redisc == nil {
|
|
return
|
|
}
|
|
var jsonBytes []byte
|
|
jsonBytes, err = msgpack.Marshal(&vid)
|
|
if err != nil {
|
|
return
|
|
}
|
|
err = redisc.Set(redisKey, string(jsonBytes), redisconst.DataCachExpire)
|
|
return
|
|
}
|
|
str, err := redisc.Get(redisKey)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if str == nil {
|
|
err = errors.New("redis key is null")
|
|
return
|
|
}
|
|
err = msgpack.Unmarshal([]byte(*str), &vid)
|
|
if err != nil {
|
|
log.Warn(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "GetByID", table, "FindOne", err), log.Any("id", id))
|
|
}
|
|
return
|
|
}
|
|
|
|
func GetShareListFromRedis() ([]ShareInfo, error) {
|
|
redisKey := redisconst.GetVideoShareListKey()
|
|
redisc := getRedis()
|
|
if redisc == nil || !redisc.Exists(redisKey) {
|
|
status := CheckPass
|
|
sis, err := getShareList(&status)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if redisc == nil {
|
|
return sis, err
|
|
}
|
|
var jsonBytes []byte
|
|
jsonBytes, err = msgpack.Marshal(sis)
|
|
if err != nil {
|
|
return sis, nil
|
|
}
|
|
err = redisc.Set(redisKey, jsonBytes, redisconst.GetVideoShareListExpired())
|
|
return sis, nil
|
|
}
|
|
str, err := redisc.Get(redisKey)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if str == nil {
|
|
return nil, errors.New("redis key is null")
|
|
}
|
|
var sis []ShareInfo
|
|
return sis, msgpack.Unmarshal([]byte(*str), &sis)
|
|
}
|