.net core 与内存缓存相比,Redis速度非常慢
我们最近已将内存缓存切换到Azure Redis缓存。 因为API是相同的,所以它非常简单。除了更大的延迟之外,一切都很好。我怀疑这与不恰当的缓存技术有关。但是,当我们使用内存缓存时,这并不是一个问题,我希望这可以通过Redis配置来解决 我们的数据结构反映了数据库模式。每个记录一个键。例如,为了获取100个用户,我们查询缓存100次。由于Redis喜欢使用较小的块,因此这似乎是一条可行的道路 我读过关于流水线和多路复用的书。这可能解决这个问题吗 我们如何做到这一点的示例:.net core 与内存缓存相比,Redis速度非常慢,.net-core,redis,stackexchange.redis,azure-redis-cache,.net Core,Redis,Stackexchange.redis,Azure Redis Cache,我们最近已将内存缓存切换到Azure Redis缓存。 因为API是相同的,所以它非常简单。除了更大的延迟之外,一切都很好。我怀疑这与不恰当的缓存技术有关。但是,当我们使用内存缓存时,这并不是一个问题,我希望这可以通过Redis配置来解决 我们的数据结构反映了数据库模式。每个记录一个键。例如,为了获取100个用户,我们查询缓存100次。由于Redis喜欢使用较小的块,因此这似乎是一条可行的道路 我读过关于流水线和多路复用的书。这可能解决这个问题吗 我们如何做到这一点的示例: services.A
services.AddDistributedRedisCache(action =>
{
action.Configuration = "...";
action.InstanceName = "...";
});
这在每次循环迭代中都会被调用
byte[]cacheData=wait Cache.GetAsync(key)代码>
注意:Azure Redis缓存与我们的web服务器位于同一区域。您是否正在等待其中一个用户的一个响应,然后再发出下一个用户的请求?@JamesThorpe在这个特定示例中,我正在获取一个要显示的用户列表。但是您如何获取它们呢?您说每个请求都是针对一个用户的,但您是否在等待该请求完成后再从列表中获取下一个用户?@JamesThorpe我正在循环一系列需要单独获取的密钥。我在每次循环迭代中调用“wait Cache.GetAsync(key)”。当我们使用内存缓存时,这不是一个问题,在这种情况下,您使用本地集合来保存同一进程中的所有数据。在缓存上循环对当时的性能也是不利的,但除非有大量流量,否则您不会注意到。有了Redis,您可以调用另一台机器上的服务器,因此效率低下的循环将花费更多。