Очистить кэш Redis программно

86
24 февраля 2022, 07:00

В своём приложении я использую Redis в качестве кэш-хранилища, куда в процессе работы заносятся разные данные. Некоторые хранятся там временно (минут 5), некоторые без ограничения по времени.

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddDistributedRedisCache(option =>
    {                
        option.Configuration = Configuration["Redis:Address"];
        option.InstanceName = "...";
    });  
}

Также у меня есть метод, вызываемый при закрытии приложения

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime applicationLifetime)
{
    applicationLifetime.ApplicationStopping.Register(OnShutdown);
    ...
}
private void OnShutdown()
{
    ...       
}

Каким образом я могу достать в методе OnShutdow кэш-хранилище и полностью очистить его, чтобы при следующем запуске приложения данных о его предыдущей работе не было?

Answer 1

Одно из возможных решений ( и видимо единственное ) - выполнение операции через командную строку

    private void OnShutdown()
    {
        if(RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
            ExecuteCommand("redis-cli flushall");     
        ...       
    }
    public void ExecuteCommand(string command)
    {
        Process proc = new System.Diagnostics.Process();
        proc.StartInfo.FileName = "/bin/bash";
        proc.StartInfo.Arguments = "-c \" " + command + " \"";
        proc.StartInfo.UseShellExecute = false;
        proc.StartInfo.RedirectStandardOutput = true;
        proc.Start();
        Console.Write("Execution result: ");
        while (!proc.StandardOutput.EndOfStream)
        {
            Console.WriteLine(proc.StandardOutput.ReadLine());
        }
    }
READ ALSO
Как реализовать алгоритм заливки в Unity?

Как реализовать алгоритм заливки в Unity?

У меня есть заготовка игры

117
Почему возникает NullReferenceException? [дубликат]

Почему возникает NullReferenceException? [дубликат]

Выполняю одно из заданий курса по С#, которое звучит так:

93
групировка по нескольким столбцам c#

групировка по нескольким столбцам c#

Надо программно сделать аналог метода group by по нескольким полям на язык с #, но проблема в том, что эти поля заранее не определены, и в зависимости...

97