我有一个ASP .Net Core 2.2。 Web API。我想通过使用MemoryCache来提高性能。但是,我需要缓存2种不同的类型,它们都使用整数键。一种是用户列表,另一种是组列表。
现在,我要在Startup.cs文件中添加MemoryCache服务:
services.AddMemoryCache();
然后我使用依赖注入在两个不同的位置(在中间件和我编写的服务中)访问此缓存。
据我了解,这两个缓存都是同一实例。因此,当我向其中添加各种用户和组时,由于它们都具有整数键,因此会发生冲突。我该如何处理?我考虑过使用两个缓存-每种类型一个-但是(a)我不确定如何做到这一点,以及(b)我读过某处的文章,建议不要使用多个缓存。有什么想法吗?
答案 0 :(得分:1)
是的,我之前遇到过同样的问题,因此不得不创建MemoryCache的扩展版本,该扩展版本允许我插入不同的“商店”。您可以通过包装您在“元数据”类型类中保留在缓存中的数据。我想类似于ServiceDescriptors如何在DI中包装您的服务注册?
另外,对于“我考虑过使用两个缓存-每种类型一个”的问题的具体答案。这是出现问题的地方,因为我相信默认情况下IMemoryCache被注册为单例