diff --git a/domain/cache/room_c/userRoomVisit.go b/domain/cache/room_c/userRoomVisit.go index b2bf2cfd3950d0603f82f0c6455f8db2515ef988..086166854cc9787075eb8f6df308a99849cbfb08 100644 --- a/domain/cache/room_c/userRoomVisit.go +++ b/domain/cache/room_c/userRoomVisit.go @@ -6,6 +6,7 @@ import ( "git.hilo.cn/hilo-common/mylogrus" "git.hilo.cn/hilo-common/resource/config" "git.hilo.cn/hilo-common/resource/redisCli" + "github.com/bluele/gcache" redis2 "github.com/go-redis/redis/v8" "github.com/spf13/cast" "hilo-group/_const/redis_key" @@ -79,19 +80,25 @@ func GetUserRoomVisit(userId uint64) (map[string]int64, error) { // 批量获取房间访问人数 // 带上lru +var roomVisitCountLru = gcache.New(100).LRU().Build() + func MGetRoomVisitCount(groupIds []string) (map[string]string, error) { visit := make(map[string]string) if len(groupIds) <= 0 { return visit, nil } - // 用redisCluster中的zset代替,只是取出大于100的 + lKey := "room:visit:count" + if data, err := roomVisitCountLru.Get(lKey); err == nil { + return data.(map[string]string), nil + } + // 用redisCluster中的zset代替,只是取出大于10的 zKey := redis_key.GetPrefixRoomVisitCountZset() - cnt := 100 + cnt := 10 if !config.AppIsRelease() { cnt = 0 } zRes, err := redisCli.GetClusterRedis().ZRevRangeByScoreWithScores(context.Background(), zKey, &redis2.ZRangeBy{ - Min: fmt.Sprintf("%d", cnt), // 100人数以上的。 + Min: fmt.Sprintf("%d", cnt), Max: "+inf", }).Result() if err != nil { @@ -101,6 +108,7 @@ func MGetRoomVisitCount(groupIds []string) (map[string]string, error) { for _, v := range zRes { visit[cast.ToString(v.Member)] = cast.ToString(v.Score) } + _ = roomVisitCountLru.SetWithExpire(lKey, visit, time.Minute*15) return visit, nil } diff --git a/domain/model/group_m/groupBanned.go b/domain/model/group_m/groupBanned.go index 879f806559cec67dba5cdbc59544f706b61296d7..06f46c12c618387d56b3dfa9b1b4cda92c626d7f 100644 --- a/domain/model/group_m/groupBanned.go +++ b/domain/model/group_m/groupBanned.go @@ -31,11 +31,10 @@ var bannedGroupCache = gcache.New(100).LRU().Build() func GetBannedGroups(model *domain.Model) ([]GroupBanned, error) { key := "banned" if data, err := bannedGroupCache.Get(key); err == nil { - model.Log.Infof("GetBannedGroups cache:%v", len(data.([]GroupBanned))) return data.([]GroupBanned), nil } result := make([]GroupBanned, 0) - err := model.Db.Find(&result).Error + err := model.DB().Find(&result).Error if err != nil { return nil, err } diff --git a/domain/model/group_m/mic.go b/domain/model/group_m/mic.go index b1ef9566b856cb438124a925c2d178305101c900..c144b7c182c6b1cf34739fc16b8a1fd73c026b82 100644 --- a/domain/model/group_m/mic.go +++ b/domain/model/group_m/mic.go @@ -926,7 +926,6 @@ func GetMicHasInGroupNum(model *domain.Model) (map[string]int64, error) { } // cache 1min _ = micGroupNumCache.SetWithExpire(micGroupNumKey, resultGroupUuids, time.Minute*15) - //model.Log.Infof("GetMicHasInGroupNum cache miss:%v", resultGroupUuids) return resultGroupUuids, nil } diff --git a/domain/model/group_m/room.go b/domain/model/group_m/room.go index 7fe67658be6a9a86bedccd36de81644b26a52cd0..711b670e86dfd6d384f08807593a65306372f461 100644 --- a/domain/model/group_m/room.go +++ b/domain/model/group_m/room.go @@ -344,7 +344,7 @@ func RoomLivingExistsGroup(model *domain.Model) (map[string]map[uint64]struct{}, groupGroup[tempGroupUid] = map[uint64]struct{}{userId: {}} } } - model.Log.Infof("RoomLivingExistsGroup size = %d", len(groupGroup)) + //model.Log.Infof("RoomLivingExistsGroup size = %d", len(groupGroup)) return groupGroup, nil } @@ -420,15 +420,12 @@ func BatchGetRoomVisitCount(logE *logrus.Entry, groupIds []string) (map[string]i if err != nil { return nil, err } - //logE.Infof("MGetRoomVisitCount:%v", roomVisitCount) visitCount := make(map[string]int64) for _, groupId := range groupIds { // 先从二级缓存中找 if c, ok := roomVisitCount[groupId]; ok { if vc, err := strconv.ParseInt(c, 10, 64); err == nil && vc > 0 { - logE.Debugf("GetRoomVisitCount, from roomVisitCount %s - %d", groupId, vc) - visitCount[groupId] = vc } } else { diff --git a/route/group_r/group_list.go b/route/group_r/group_list.go index 7f5e4e16bb7a8076eb62bfca9ba2db4fe142f1ac..f58c364b8df68b09c2a819ac3009c8d1e8fc8524 100644 --- a/route/group_r/group_list.go +++ b/route/group_r/group_list.go @@ -81,14 +81,6 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) { model.Log.Errorf("GetUserCountryArea 获取国家资源错误 userId:%d, err:%v", myUserId, err) return myContext, err } - /* 2022-06-30 老板说先不分区 - regions, err := res_m.GetAllLangRegion(model) - if err != nil { - return myContext, err - } - myRegion := regions[myCountry] - model.Log.Infof("GetPopularGroups: user %d, name = %s, country = %s, region = %s", myUserId, myNick, myCountry, myRegion) - */ bannedGroups, err := group_m.GetBannedGroupsMap(model) if err != nil { return myContext, err @@ -100,7 +92,6 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) { return myContext, err } gameGroups := group_m.GetGameGroupsMap(model) - //model.Log.Infof("GetPopularGroups: page size = %d, page index = %d, banMap %v, hidenMap %v,cost:%v", pageSize, pageIndex, bannedGroups, hiddenGroups, time.Now().Sub(start)) hotGroupList := make([]group_m.GroupInfo, 0) @@ -109,7 +100,7 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) { if err != nil { return myContext, err } - model.Log.Infof("GetMicHasInGroupNum: cost %v", time.Now().Sub(start)) + model.Log.Infof("GetMicHasInGroupNum: cost %v", time.Now().Sub(start)) // 正服高峰期耗时也很短的。 banCount := 0 hiddenCount := 0 @@ -131,7 +122,6 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) { } groupIds = append(groupIds, i) } - //model.Log.Infof("GetPopularGroups, micGroupNum: %v, banned %d, hidden %d,cost:%v", micGroupNum, banCount, hiddenCount, time.Now().Sub(start)) // 3. 处理置顶群 topGroupIds, err := getTopGroups(model, bannedGroups, hiddenGroups, area) @@ -161,24 +151,10 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) { } for _, i := range topGroupIds { - /* 2022-06-30 老板说先不分区 // 置顶只对同语言区的生效 - if myRegion != regions[topGroupInfo[i].Country] { - continue - } - - */ // 已经置顶的,直接进队列,不再参与排序 hotGroupList = append(hotGroupList, groups[i]) - //delete(groupIds, i) } - // for pretty log - //logstr := "" - //for _, i := range hotGroupList { - //logstr += " " + i.ImGroupId - //} - //logstr += " |" - myArea := fmt.Sprintf("%d", area) // 国家区域信息 resAreaMap, err := res_c.GetCountryAreaMap(model) @@ -204,16 +180,14 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) { } } } - //model.Log.Infof("GetPopularGroups, countryScore[*]: %v,cost:%v", countryScore, time.Now().Sub(start)) now := time.Now() bTime := now.Add(-time.Minute * 30) g := gift_cv.GiftOperate{SceneType: gift_e.GroupSceneType} - diamonds, err := g.GetRangeConsumeSummaryV2(bTime, now, groupIds) + diamonds, err := g.GetRangeConsumeSummaryV2(bTime, now, groupIds) // 获取1小时内的送礼榜 if err != nil { return myContext, err } - //model.Log.Infof("GetPopularGroups, diamonds in 30 mins: %v,cost:%v", diamonds, time.Now().Sub(start)) visitCount, err := group_m.BatchGetRoomVisitCount(model.Log, groupIds) if err != nil { @@ -269,12 +243,6 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) { // * 同国家 ^ 麦上有人 + 开放群 - 需要等级的群 for _, g := range sortedGroupIds { hotGroupList = append(hotGroupList, groups[g]) - //prefix := " " - //if countryScore[g] == 0 { - //prefix += "*" - //} - //logstr += prefix + g + ":" + groups[g].Code + ":" + strconv.Itoa(int(micGroupNum[g])) + - // ":" + strconv.FormatUint(diamonds[g], 10) + ":" + strconv.Itoa(int(visitCount[g])) } total := len(hotGroupList) //model.Log.Infof("GetPopularGroups: hotGroupList size = %d,cost:%v", total, time.Now().Sub(start))