.Net简单的内存缓存

Mat*_*t G 8 .net caching

简而言之,.Net生态系统中存在哪些SIMPLE内存缓存?

我在寻找的是:

  • 无配置(除了简单的API调用).我不想搞乱外部配置文件,因为它们只会使部署复杂化.
  • 相同进程(不是某些外部进程或服务器).最好像创建一样容易
    var myCache = new SimpleCache(1024 * 1024 * 100); // 100 MB
  • 指定的内存限制
  • 根据最少使用情况从缓存中清除的项目
  • 基于时间的到期(不是必需的,但在其他情况下可能有用)
  • 适用于.Net 3.5

我已经研究过这些选项:

  • ASP.Net System.Web.Caching
    • 它的API不支持对缓存大小的任何控制,也不支持基于使用的优先级.因此,当它决定是否有足够的内存压力来清空缓存时,你完全处于怜悯之中.
  • System.Runtime.Caching
  • Microsoft企业库 - 缓存块
    • 除了拥有重量级的声誉之外,我不喜欢使用XML文件或app.config进行配置.此外,虽然它支持基于存储的对象的NUMBER来限制高速缓存的大小,但是它没有用于限制那些对象的SIZE的机制.
  • NCACHE
    • 对于我想要的用例可能有点过分,但最重要的是它是一个付费产品,这不是我想要处理的东西(与我相比,我只需要在一两天内写一个).与往常一样,其快递版具有使用限制,不鼓励其用于任何生产目的.
  • Memcached的
    • 与我想要的完全相反(外部分布式流程)

我正在使用Google Protocol Buffers(protobuf-net),因此我对每个项目的内存占用量进行了相对准确的估算.我正在缓存从数据库访问返回的数据,但我不想使用正式的ORM(我实际上正在使用PetaPoco,但这不是重点).

在这个阶段,我计划实现我自己的缓存,使用双链表和哈希(字典)来提供一旦达到缓存限制就从缓存中删除最近最少使用的项.但是,在我推出自己的选项之前,我想查看是否有人知道任何合适的选项.

Jas*_*ira 1

AppFabric for Windows Server 中的缓存功能怎么样?试一试 !http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspxhttp://msdn.microsoft.com/en-us/library/hh334364.aspx

但是,如果市场上没有提供所需行为的产品,您将不得不使用设计模式来实现您自己的自定义缓存层。