redis-windows icon indicating copy to clipboard operation
redis-windows copied to clipboard

停止服务实现为“kill强制终止redis-server进程”会导致pid文件不能正常释放

Open heylogt opened this issue 1 year ago • 1 comments

停止服务,当前实现为“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; } }

heylogt avatar Nov 21 '24 02:11 heylogt

@dashiell-zhang

yes8080 avatar Nov 21 '24 07:11 yes8080