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) }