C# Redis StackExchange缓存性能

C# Redis StackExchange缓存性能,c#,.net,redis,stackexchange.redis,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(

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

考虑到以下代码

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

public string Get(string key)
{
    IDatabase cache = connection.GetDatabase();
    return cache.StringGet(key);
}
每次调用缓存时调用数据库是否会对性能造成影响

是否应该以其他方式进行管理

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

管理IDatabase的最佳实践是什么

每次调用缓存时调用数据库是否会对性能造成影响

不明显是这样

GetDatabase
返回的对象是廉价的传递对象,不需要存储

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

不过,除此之外,你不必太担心——如果你按需分配,收集费用仍然非常便宜


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

“唯一值得一提的是,在触摸redis之前,它可能值得缓存在内存中:redis调用很快,但不进行redis调用的速度更快。”我假设您的意思是,一旦您调用缓存,然后将值存储在内存中,可能只是在请求的生命周期内,但这可能会有所不同。否则,如何处理跨服务器的内存失效?@Craig理想情况下,比请求时间长;失效事项时:发布/订阅;实际上,redis的最新版本可选地包括键空间更改通知,但这需要在服务器上启用;我们只是在需要无效时使用常规的显式pub/sub(我们的“set value”方法有一个
boolbroadcastInvalization=false
,如果你明白我的意思的话)很好。您有广播失效实现的示例吗?