VideoStream/service/user.go

42 lines
906 B
Go
Raw Normal View History

package service
import (
"VideoStream/dao"
"VideoStream/worker"
"encoding/json"
"fmt"
"strconv"
)
// 获取用户信息有redis缓存
func GetUserByIDWithCache(id int) dao.User {
if id <= 0 {
return dao.User{}
}
var user dao.User
//先从redis获取
key := "user_info_" + strconv.Itoa(id)
user_str := worker.GetRedis(key)
if user_str != "" {
err := json.Unmarshal([]byte(user_str), &user)
if err != nil {
fmt.Println("get user info , json unmarshal error:", err, "\tuser_str:", user_str)
return dao.User{}
}
} else {
user = dao.FindUserByID2(id)
if user.ID != 0 {
userJson, err := json.Marshal(user)
if err != nil {
fmt.Println("get user info , json marshal error:", err)
return dao.User{}
}
success := worker.SetRedis(key, string(userJson))
if !success {
fmt.Println("set redis error,user json:", string(userJson))
}
}
}
return user
}