Redis StackExchange缓存性能

时间:2014-06-24 10:18:03

标签: c# .net 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);
}

每次调用缓存时,数据库的获取是否会成为性能命中?

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

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

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

1 个答案:

答案 0 :(得分:6)

  

每次调用缓存时,数据库的获取是否会成为性能命中?

不明显; as described here

  

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

当然,如果您愿意,可以选择存储它。碰巧,我们这样做 - 但这只是因为我们使用不同的数据库号码(针对不同的站点),并且存储IDatabase就像存储int一样方便。代表数据库编号。

除此之外,您不需要太担心 - 如果您按需分配,收集等等仍然会非常便宜。

唯一值得一提的是,在触摸redis之前,可能值得在内存中进行缓存:redis调用很快,但是redis调用你没有更快。