diff --git a/src/server/db/Redis.go b/src/server/db/Redis.go index b2b79719..31b9eea9 100644 --- a/src/server/db/Redis.go +++ b/src/server/db/Redis.go @@ -194,6 +194,20 @@ func RedisZAdd(key string, member string, score float64) { err := RdbWrite.ZAdd(ctx, key, redis.Z{Score: score, Member: member}).Err() if err != nil { log.Debug("redis zadd failed, err:%v\n", err) + return + } + const maxRankSize int64 = 10000 + count, err := RdbWrite.ZCard(ctx, key).Result() + if err != nil { + log.Debug("redis zcard failed, err:%v\n", err) + return + } + if count > maxRankSize { + removeCount := count - maxRankSize + err = RdbWrite.ZRemRangeByRank(ctx, key, 0, removeCount-1).Err() + if err != nil { + log.Debug("redis zremrangebyrank failed, err:%v\n", err) + } } } diff --git a/src/server/test/fix_test.go b/src/server/test/fix_test.go index 12679938..e59763a0 100644 --- a/src/server/test/fix_test.go +++ b/src/server/test/fix_test.go @@ -281,3 +281,7 @@ func TestChampionShipCreateRobot(t *testing.T) { robot := game.CreateRobot(1.0, 1) fmt.Printf("Created Robot: %v\n", robot) } + +func TestRedisZset(t *testing.T) { + db.RedisZAdd("rank_user", "100001", 100) +}