Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net core 与内存缓存相比,Redis速度非常慢_.net Core_Redis_Stackexchange.redis_Azure Redis Cache - Fatal编程技术网

.net core 与内存缓存相比,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

我们最近已将内存缓存切换到Azure Redis缓存。 因为API是相同的,所以它非常简单。除了更大的延迟之外,一切都很好。我怀疑这与不恰当的缓存技术有关。但是,当我们使用内存缓存时,这并不是一个问题,我希望这可以通过Redis配置来解决

我们的数据结构反映了数据库模式。每个记录一个键。例如,为了获取100个用户,我们查询缓存100次。由于Redis喜欢使用较小的块,因此这似乎是一条可行的道路

我读过关于流水线和多路复用的书。这可能解决这个问题吗

我们如何做到这一点的示例:

services.AddDistributedRedisCache(action =>
{
    action.Configuration = "...";
    action.InstanceName = "...";
});
这在每次循环迭代中都会被调用

byte[]cacheData=wait Cache.GetAsync(key)


注意:Azure Redis缓存与我们的web服务器位于同一区域。

您是否正在等待其中一个用户的一个响应,然后再发出下一个用户的请求?@JamesThorpe在这个特定示例中,我正在获取一个要显示的用户列表。但是您如何获取它们呢?您说每个请求都是针对一个用户的,但您是否在等待该请求完成后再从列表中获取下一个用户?@JamesThorpe我正在循环一系列需要单独获取的密钥。我在每次循环迭代中调用“wait Cache.GetAsync(key)”。
当我们使用内存缓存时,这不是一个问题,在这种情况下,您使用本地集合来保存同一进程中的所有数据。在缓存上循环对当时的性能也是不利的,但除非有大量流量,否则您不会注意到。有了Redis,您可以调用另一台机器上的服务器,因此效率低下的循环将花费更多。