简单地说,在.Net生态系统中存在哪些简单的内存缓存?
我要找的是:
var myCache = new SimpleCache(1024 * 1024 * 100); // 100 MB我已经重申了这些选择:
我正在使用Google缓冲器(Protobuf),所以我对每一项的内存占用都有一个相对准确的估计。我正在缓存从数据库访问中返回的数据,但我不想使用正式的ORM (我实际上使用的是PetaPoco,但这不是重点)。
在这一阶段,我计划实现自己的缓存,使用双链接列表和散列(字典),以便在达到缓存限制后删除最近从缓存中最少使用的项。然而,我想看看是否有人知道任何合适的选择,然后我自己。
发布于 2012-08-30 20:03:50
那你最后拿这个缓存做了什么?
我有一个Universal的原型,它可以实现您想要的功能,除了缓存限制是根据容量(条目数量)而不是内存使用情况,但是它还有一个您可能会欣赏的特性:本地持久性。
缓存是按层结构的,其中可以有一个单层:内存,双层:内存+本地持久性,或三层:内存+本地持久性+网络共享。您可以根据需要使用任何层的组合。尽管设计为.net远程服务的网络共享可以安装在网络上的任何计算机上,并且可以由客户端缓存自我发现,但目前还没有完全发挥作用。
缓存是通过接口ICache访问的泛型类。本地持久缓存使用SQL Compact4创建动态数据库和表,这些数据库和表包含TKey的所有字段、时间戳和序列化为图像列的TValue。在多层配置的情况下,当您在顶级缓存上使用TryGetValue( TKey key,out TValue值)方法时,如果第一层(内存缓存)没有它与下一层(本地持久的)内部检查的项,那么下一层.直到没有更多的缓存来提供数据为止。当内存缓存丢弃一个项时,它允许下一个缓存将该项添加到其层,以便在持久缓存的情况下将数据存储在以后的请求中。
这些缓存有一个使用定义的保留时间参数(即内存缓存的几分钟,本地持久缓存的30天)和容量。
如果有人感兴趣的话,我可以把它作为公共领域代码发布。
发布于 2012-06-11 21:22:29
AppFabric for Windows中的缓存特性如何?试试看!http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx和http://msdn.microsoft.com/en-us/library/hh334364.aspx
但是,如果市场上没有提供所需行为的产品,则必须使用Design实现您自己的自定义缓存层。
发布于 2012-06-11 22:13:10
https://stackoverflow.com/questions/10981069
复制相似问题