【发布时间】:2017-10-25 07:38:48
【问题描述】:
MemoryCache 是否有任何通用的替代方案/实现?
我知道 MemoryCache 在底层使用 Hashtable,因此只需转换为使用 Dictionary,它是 Hashtable 的通用版本。
这将提供类型安全并提供性能优势,因为没有装箱/拆箱。
编辑:我感兴趣的另一件事是拥有不同的密钥类型。默认为 System.String。
【问题讨论】:
-
但是你只能缓存一种类型?我不会太担心这个成本,装箱部分在原始值类型上可以忽略不计。
-
@AdamHouldsworth:是的,这是有意的。我用滑动过期将缓存包裹在一个数据库映射上,它只返回一种类型。
-
那么除了类型安全之外,您不会从泛型实现中获得任何好处。我会围绕
MemoryCache创建一个瘦包装类,它知道您感兴趣的类型,然后所有调用代码都可以以强类型的方式使用包装。 -
有一个叫做 LazyCache 的东西,它是一个 NuGet 包。最新版本似乎已经测试了将近一年,但人们说它很稳定。
标签: c# generics caching optimization