/// <summary>
        /// 매칭 조건이 맞지 않아 대기
        /// </summary>
        /// <param name="session"></param>
        /// <param name="request"></param>
        /// <param name="responseStream"></param>
        /// <returns></returns>
        public static async Task WaitStartPlay(Session session, StartPlayRequest request, IServerStreamWriter <StartPlayReply> responseStream)
        {
            // 대기자로 등록
            await MatchUser.RemoveMatchUser(session.user_no);

            await WaitingList.AddWaitingUser(new WaitingUser()
            {
                map_id = session.map_id, rank = session.rank
            }, session.user_no);
        }
        public static async Task TestCache()
        {
            var u1 = new WaitingUser()
            {
                map_id = 1, rank = 1,
            };
            var u2 = new WaitingUser()
            {
                map_id = 1, rank = 1,
            };
            var u3 = new WaitingUser()
            {
                map_id = 1, rank = 1,
            };
            var u4 = new WaitingUser()
            {
                map_id = 1, rank = 1,
            };
            var u5 = new WaitingUser()
            {
                map_id = 1, rank = 1,
            };

            await WaitingList.AddWaitingUser(u1, 1);

            await Task.Delay(10 * 1000);

            await WaitingList.AddWaitingUser(u2, 2);

            await WaitingList.AddWaitingUser(u3, 3);

            await WaitingList.AddWaitingUser(u4, 4);

            await WaitingList.AddWaitingUser(u5, 4);

            var ret1 = await WaitingList.GetWaitingUser(1, 1, 3);


            var ret2 = await WaitingList.GetWaitingUser(1, 1, 3);


            var ret3 = await WaitingList.RemoveWaitingUser(3);

            await WaitingList.RemoveWaitingUser(1, 1, 2);
        }