停止服务实现为“kill强制终止redis-server进程”会导致pid文件不能正常释放
停止服务,当前实现为“kill强制终止redis-server进程”会导致pid文件不能正常释放! 考虑为“redis-cli -a -p shutdown“? public override async Task StopAsync(CancellationToken stoppingToken) { if (redisProcess != null && !redisProcess.HasExited) { try { var redisCliPath = Path.Combine(AppContext.BaseDirectory, "redis-cli.exe"); //port=6379,应自文件读取 var processStartInfo = new ProcessStartInfo(redisCliPath, "-h 127.0.0.1 -p 6379 SHUTDOWN") { RedirectStandardOutput = true, RedirectStandardError = true, UseShellExecute = false, CreateNoWindow = true }; using (var cliProcess = Process.Start(processStartInfo)) { cliProcess.WaitForExit(); await Task.Delay(TimeSpan.FromSeconds(10), stoppingToken); if (!redisProcess.HasExited) { redisProcess.Kill(); redisProcess.Dispose(); } } } catch (Exception ex) { Console.WriteLine($"Error attempting to shutdown Redis: {ex.Message}"); redisProcess.Kill(); redisProcess.Dispose(); } } return Task.CompletedTask; } }
@dashiell-zhang