package service
|
|
import (
|
"github.com/hashicorp/golang-lru/v2/expirable"
|
"time"
|
)
|
|
type userBaseInfo struct {
|
UserId int
|
NickName string
|
}
|
|
var userCache *expirable.LRU[string, *userBaseInfo]
|
|
func init() {
|
//make cache with 5 minutes TTL and 100 max keys
|
userCache = expirable.NewLRU[string, *userBaseInfo](100, nil, time.Minute*5)
|
}
|
|
func GetUserBaseCache(adminUserId string) *userBaseInfo {
|
userCache, ok := userCache.Get(adminUserId)
|
if !ok {
|
userService := UserService{}
|
userRecord, err := userService.GetUserInfo(adminUserId)
|
if err != nil {
|
return nil
|
}
|
baseInfo := &userBaseInfo{
|
UserId: userRecord.ID,
|
NickName: userRecord.NickName,
|
}
|
SetUserBaseCache(adminUserId, baseInfo)
|
return baseInfo
|
}
|
return userCache
|
}
|
|
func SetUserBaseCache(adminUserId string, user *userBaseInfo) {
|
_ = userCache.Add(adminUserId, user)
|
}
|