C# 如果Redis缓存失败,则执行一个函数

C# 如果Redis缓存失败,则执行一个函数,c#,asp.net,.net,redis,stackexchange.redis,C#,Asp.net,.net,Redis,Stackexchange.redis,我正在开发一个.NETCore3.1应用程序。使用“StackExchange.Redis”库处理Redis上的缓存操作。 在Startup.cs中配置连接字符串 services.AddStackExchangeRedisCache(options => { options.Configuration = Configuration.GetValue<string>("localhost:6379"); options.InstanceN

我正在开发一个.NETCore3.1应用程序。使用“StackExchange.Redis”库处理Redis上的缓存操作。

在Startup.cs中配置连接字符串

services.AddStackExchangeRedisCache(options => {
    options.Configuration = Configuration.GetValue<string>("localhost:6379");
    options.InstanceName = "laserlamb:"; 
});

使用依赖项注入对象在缓存中设置记录

public class SomeRandomClass
{
    private IDistributedCache cache;
    public SomeRandomClass(IDistributedCache cache) { this.cache = cache; }
    
    public async Task SaveToCache()
    {
        await cache.SetRecord("Key", "Value");
    }
}
如果我的Redis实例没有运行,就会抛出一个错误。

当缓存不可用时,如何更新
isCacheAvailable


我想你需要检查一下。它有
Retry/WaitAndRetry/RetryForever
断路器
,非常方便

您有Microsoft
DistributedCache
提供程序


去看看。

我想你想去看看。它有
Retry/WaitAndRetry/RetryForever
断路器
,非常方便

您有Microsoft
DistributedCache
提供程序


检查一下。

不知道你在问什么。你能举个例子说明如果缓存不可用,你希望发生什么吗?@stuartd我已经更新了问题和代码。如果有帮助,请告诉我。不知道你在问什么。你能举个例子说明如果缓存不可用,你希望发生什么吗?@stuartd我已经更新了问题和代码。如果有帮助,请告诉我。谢谢。我知道波利的情况,但从没想过在那里会有用。:)当然会,这对你想要重试并退回到日志记录的情况是有好处的。如果你不明白,你怎么能用Polly帮我解决这个问题。但基本上,您可以有重试(如果您愿意),以及用于记录或调用其他方法的回退策略。您可以将它们合并到一个策略中。:)但是,伟大的,简单但强大的东西。工作完美。我一直忙到凌晨3点才想办法解决这个问题。你的解决方案简单而有效。非常感谢@Sasaman太好了,它可以在很多情况下使用,把它放在袖子里^_^非常感谢。我知道波利的情况,但从没想过在那里会有用。:)当然会,这对你想要重试并退回到日志记录的情况是有好处的。如果你不明白,你怎么能用Polly帮我解决这个问题。但基本上,您可以有重试(如果您愿意),以及用于记录或调用其他方法的回退策略。您可以将它们合并到一个策略中。:)但是,伟大的,简单但强大的东西。工作完美。我一直忙到凌晨3点才想办法解决这个问题。你的解决方案简单而有效。非常感谢@Sasaman太好了,它可以在很多情况下使用,把它放在袖子里^_^
public class SomeRandomClass
{
    private IDistributedCache cache;
    public SomeRandomClass(IDistributedCache cache) { this.cache = cache; }
    
    public async Task SaveToCache()
    {
        await cache.SetRecord("Key", "Value");
    }
}