我正在尝试使用Azure的Redis StackExchange更改提供程序,只是想知道最佳设置。
考虑以下代码
private static ConnectionMultiplexer connection = ConnectionMultiplexer.Connect(...);
public string Get(string key)
{
IDatabase cache = connection.GetDatabase();
return cache.StringGet(key);
}
每次调用缓存时,数据库的获取是否会成为性能命中?
它应该以其他方式管理吗?
它应该只是在对象的生命周期中创建而不是静态的吗?
管理IDatabase的最佳做法是什么?
答案 0 :(得分:6)
每次调用缓存时,数据库的获取是否会成为性能命中?
不明显; as described here:
从
GetDatabase
返回的对象是一个廉价的pass-thru对象,不需要存储。
当然,如果您愿意,可以选择存储它。碰巧,我们这样做 - 但这只是因为我们使用不同的数据库号码(针对不同的站点),并且存储IDatabase
就像存储int
一样方便。代表数据库编号。
除此之外,您不需要太担心 - 如果您按需分配,收集等等仍然会非常便宜。
唯一值得一提的是,在触摸redis之前,可能值得在内存中进行缓存:redis调用很快,但是redis调用你没有更快。