Redis StackExchange缓存性能

Cra*_*aig 2 .net c# redis stackexchange.redis

我正在尝试使用Azure的Redis StackExchange更改提供程序,只是想知道最佳设置.

考虑以下代码

private static ConnectionMultiplexer connection = ConnectionMultiplexer.Connect(...);

public string Get(string key)
{
    IDatabase cache = connection.GetDatabase();
    return cache.StringGet(key);
}
Run Code Online (Sandbox Code Playgroud)

数据库的获取是否会在每次调用缓存时调用它?

它应该以其他方式进行管理吗?

它应该只是在对象的生命周期中创建而不是静态的吗?

管理IDatabase的最佳做法是什么?

Mar*_*ell 6

数据库的获取是否会在每次调用缓存时调用它?

不明显; 如下所述:

返回的对象GetDatabase是廉价的pass-thru对象,不需要存储.

当然,如果您愿意,可以选择存储它.实际上,我们这样做 - 但这仅仅是因为我们使用不同的数据库编号(针对不同的站点),并且存储IDatabase和存储int表示数据库编号的存储一样方便.

除此之外,你不需要太担心 - 如果你按需分配,收集等等仍然很便宜.

值得一提的另一件事是,你接触redis 之前可能值得在内存中缓存:redis调用很快,但是你没有做的redis调用更快.