Microsoft.Extensions.Caching.Redis选择与db0不同的数据库

Dan*_*iel 9 c# asp.net caching redis

关于理解使用哪个redis数据库以及如何配置它的问题.

我有一个默认的ASP.NET核心Web应用程序和一个默认配置的本地redis-server(包含15个数据库)

在此输入图像描述

在包管理控制台上我安装了:

Install-Package Microsoft.Extensions.Caching.Redis
Run Code Online (Sandbox Code Playgroud)

Redis在Startup.cs中配置如下:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    services.AddDistributedRedisCache(option =>
    {
        option.Configuration = "127.0.0.1";
        option.InstanceName = "master";
    });
}
Run Code Online (Sandbox Code Playgroud)

读取和写入缓存中的值的代码取自文档:

var cacheKey = "TheTime";
var existingTime = _distributedCache.GetString(cacheKey);
if (!string.IsNullOrEmpty(existingTime))
{
    return "Fetched from cache : " + existingTime;
}
else
{
    existingTime = DateTime.UtcNow.ToString();
    _distributedCache.SetString(cacheKey, existingTime);
    return "Added to cache : " + existingTime;
}
Run Code Online (Sandbox Code Playgroud)

但是这个代码只使用默认数据库db0,无论我配置什么.

例如,使用此配置:

services.AddDistributedRedisCache(option =>
{
    option.Configuration = "127.0.0.1";
    option.InstanceName = "db6";
});
Run Code Online (Sandbox Code Playgroud)

导致:

在此输入图像描述

我需要配置什么来使用例如db6?

我必须使用Stackexchange.Redis吗?

har*_*ded 10

Microsoft.Extensions.Caching.Redis正在使用 Stackexchange.Redis 连接到Redis.

Configuration字符串记录在StackExchange.Redis上.那就是说,你应该能够做到:

services.AddDistributedRedisCache(option =>
{
    option.Configuration = "127.0.0.1;defaultDatabase=4";
    option.InstanceName = "master";
});
Run Code Online (Sandbox Code Playgroud)

  • 是的,这可行,但是如何使用一种配置连接到多个数据库?有可能吗? (3认同)