我想使用System.Runtime.Caching命名空间向我的应用程序添加缓存功能,并且可能希望在几个地方和不同的上下文中使用缓存.为此,我想使用几个MemoryCache实例.
但是,我在这里看到不鼓励使用多个MemoryCache实例:
MemoryCache不是单例,但是您应该只创建一些或者可能只创建一个MemoryCache实例,缓存项目的代码应该使用这些实例.
多个MemoryCache实例将如何影响我的应用程序?我发现这种奇怪,因为在我看来,在应用程序中使用多个缓存是一种非常常见的情况.
编辑:更具体地说,我有一个类应该为每个实例保留一个缓存.我应该避免使用MemoryCache并寻找不同的缓存解决方案吗?MemoryCache在这种情况下使用是否被认为是坏的,如果是这样,为什么?
我们需要使用 MemoryCache 缓存两种类型的数据。
我们不想在安全令牌缓存上设置 SizeLimit,因为这意味着缓存中的每个条目都需要根据.NET Core doco指定大小。这是因为安全令牌是由我们无法控制的已编译 nuget 类型插入的。
因此,创建另一个 MemoryCache 实例来仅保存 Book 项目是有意义的,这样我们就可以在向缓存添加书籍时设置项目的大小限制和大小。
此外,.NET Core 文档建议开发人员需要管理缓存的限制。
我在这里和这里读过相互冲突的帖子,它们支持/拒绝多个内存缓存实例。此外,这些与 .NET 有关,与 .NET Core 无关。
由于 .NET Core 的 MemoryCache 需要开发人员管理缓存项的逐出,并且考虑到缓存中的书籍比令牌多得多,因此我们倾向于拥有 2 个 MemoryCache 实例。
在 .NET Core Web 应用程序中使用多个 MemoryCache 实例是否可能会遇到任何问题?
我们使用.NET Core 2.1和Microsoft.Extensions.Caching.Memory v=2.1.2.0