C# Redis StackExchange缓存性能
我正在用Azure尝试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(
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
,如果你明白我的意思的话)很好。您有广播失效实现的示例吗?