【问题标题】:Azure Redis Caching dynamic applicationName or key nameAzure Redis 缓存动态应用程序名称或密钥名称
【发布时间】:2017-08-14 15:46:30
【问题描述】:

我正在尝试使用 Azure Redis 缓存来存储“多租户 MVC 应用程序”的输出缓存。我需要一种方法来区分存储在 Redis 服务器上的密钥。看下面的截图,注意 TenantId_a2/*,这里是我想以编程方式控制的键名“TenantId”。

因为我使用Redis进行输出缓存,所以我需要在web.config文件中配置redis输出缓存,截图在这里:

还有另一种从应用程序代码配置 redis 缓存的方法,但这不适用于输出缓存……我敢肯定。代码如下:

public class AzureRedisCache
{
    private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
    {
        string configString = "********";
        var options = ConfigurationOptions.Parse(configString);
        options.ClientName = "TenantId"; // GREAT :)
        options.AllowAdmin = true;
        return ConnectionMultiplexer.Connect(options);
    });

    public static ConnectionMultiplexer Connection
    {
        get
        {
            return lazyConnection.Value;
        }
    }
}

现在要调用它,我们只需使用

IDatabase cache = AzureRedisCache.Connection.GetDatabase();

我不确定是否有任何方法可以将此代码用于输出缓存或其他方式来实现上述要求。请提出建议。

【问题讨论】:

    标签: asp.net-mvc azure caching redis azure-redis-cache


    【解决方案1】:

    您正在寻找这样的东西吗?如果您这样动态设置应用程序名称会有所帮助吗?您可以将此信息放入您的应用程序启动逻辑(application_start)

    OutputCacheSection ops = (OutputCacheSection)WebConfigurationManager.GetSection("system.web/caching/outputCache");
            ProviderSettings providerSettings = ops.Providers[0];
            providerSettings.Parameters["applicationName"] = "myDynamicApplicationName";
    

    【讨论】:

    • 为了澄清,您可以将上述代码放入您的应用启动逻辑中。这不是您应该在应用执行期间随机更改的设置(例如,根据客户的输入)。
    • 非常感谢您的回复,这看起来是正确的,一旦我尝试会更新。
    • 是否可以根据applicationName从Redis中删除缓存?
    • 好吧,它不起作用,我仍然看到在 web.config 中设置的 appname
    • @Abhimanyu 您需要将其移至 Application_Start()。我将它移到 Application_Start() 的第一行,它运行良好
    猜你喜欢
    • 2014-02-12
    • 1970-01-01
    • 2017-03-23
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    相关资源
    最近更新 更多