From b6f697a491acc7b7be74271aee7abe1b3c9ecb39 Mon Sep 17 00:00:00 2001 From: iamhujiebin <458249864@qq.com> Date: Tue, 29 Aug 2023 22:41:26 +0800 Subject: [PATCH] =?UTF-8?q?zset=E5=90=8C=E6=AD=A5=E5=AD=98=E4=B8=80?= =?UTF-8?q?=E4=BB=BD=E5=88=B0redis=E9=9B=86=E7=BE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _const/redis_key/redisPrefix.go | 7 +++++++ domain/cache/room_c/userRoomVisit.go | 15 ++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/_const/redis_key/redisPrefix.go b/_const/redis_key/redisPrefix.go index b1a22ce..4a88444 100644 --- a/_const/redis_key/redisPrefix.go +++ b/_const/redis_key/redisPrefix.go @@ -249,6 +249,9 @@ const groupInUserDuration = "group_in_user_duration_{groupUuid}" // 15天内进入房间的人数 const roomVisitCount = "room_visit_count" +// 15天内进入房间的人数 member groupId score 麦位有人的数量 +const roomVisitCountZSet = "room_visit_count_zset" + // 用户进入过的房间及时间 const userEnterRoom = "enter_room_{userId}" @@ -769,6 +772,10 @@ func GetPrefixRoomVisitCount() string { return roomVisitCount } +func GetPrefixRoomVisitCountZset() string { + return roomVisitCountZSet +} + func GetPrefixSupportLevel(date string) string { return strings.Replace(supportLevel, "{date}", date, -1) } diff --git a/domain/cache/room_c/userRoomVisit.go b/domain/cache/room_c/userRoomVisit.go index 16fcbec..53ada68 100644 --- a/domain/cache/room_c/userRoomVisit.go +++ b/domain/cache/room_c/userRoomVisit.go @@ -100,7 +100,7 @@ func MGetRoomVisitCount(groupIds []string) (map[string]string, error) { } key := redis_key.GetPrefixRoomVisitCount() - res, err := redisCli.GetRedis().HMGet(context.Background(), key, miss...).Result() + res, err := redisCli.GetRedis().HMGet(context.Background(), key, miss...).Result() // todo 后续用zset key的zrange拿出前面排名的 if err != nil { return visit, err } @@ -121,14 +121,23 @@ func GetSetRoomVisitCount(groupId string) (int64, error) { vc, err := redisCli.GetRedis().ZCard(context.Background(), key).Result() // 查到合法值后,更新二级缓存 if err == nil && vc >= 0 { - ret, err := saveRoomVisitCount(groupId, vc) - mylogrus.MyLog.Infof("saveRoomVisitCount %s, ret = %d, err: %v", groupId, ret, err) + if ret, err := saveRoomVisitCount(groupId, vc); err != nil { + mylogrus.MyLog.Errorf("saveRoomVisitCount %s, ret = %d, err: %v", groupId, ret, err) + } } return vc, err } func saveRoomVisitCount(groupId string, count int64) (int64, error) { key := redis_key.GetPrefixRoomVisitCount() + zKey := redis_key.GetPrefixRoomVisitCountZset() + // zset同步存一份到redis集群 + if err := redisCli.GetClusterRedis().ZAdd(context.Background(), zKey, &redis2.Z{ + Score: float64(count), + Member: groupId, + }).Err(); err != nil { + mylogrus.MyLog.Errorf("GetPrefixRoomVisitCountZset fail %s", err.Error()) + } return redisCli.GetRedis().HSet(context.Background(), key, groupId, strconv.FormatInt(count, 10)).Result() } -- 2.22.0