private async Task <bool> KeepAlive()
        {
            try {
                foreach (var(_, sched) in SchedFactory.schedulers)
                {
                    if (!sched.IsMaster)
                    {
                        continue;
                    }

                    var discover_name = GetDiscoverName(sched.GetNameKey());
                    await _redis.HashSetAsync(discover_name, (await SchedService.FromScheduler(sched))?.GetServiceInfo());

                    await _redis.KeyExpireAsync(discover_name, TimeSpan.FromSeconds(7));
                }

                foreach (var actor in ActorFactory.Actors)
                {
                    switch (actor.RunningThread.ThreadState)
                    {
                    case ThreadState.Running:
                    case ThreadState.WaitSleepJoin: break;

                    default: continue;
                    }
                    var discover_name = GetDiscoverName(actor.GetNameKey(actor.ActorID.ToString()));
                    await _redis.HashSetAsync(discover_name, ActorService.FromActor(actor)?.GetServiceInfo());

                    await _redis.KeyExpireAsync(discover_name, TimeSpan.FromSeconds(7));
                }

                return(true);
            } catch (Exception ex) {
                _logger.LogError(ex.Message);
                Console.WriteLine(ex.Message);
            }
            return(false);
        }