具有无限#键但具有有限#对象的对象缓存

时间:2012-02-28 01:00:12

标签: c# caching

我正在寻找一个可以实现以下模式的c#对象缓存库:

  • 缓存用于缓存具有主键的特定类型T的对象。示例:Person类(具有名字,姓氏等),键是PersonId
  • 缓存可以存储无限数量的密钥。键的类型为int或long。
  • 但是,
  • 缓存只能存储T类型的有限数量的对象.T对象占用大量内存,而且我一次不能在缓存中拥有大量这些对象。
  • 在溢出时,缓存可以将对象序列化为数据库或文件等(快速介质),但缓存仍然会保留在密钥周围。

我基本上需要处理更多的T对象,而不是保留在内存中,我希望在将结果保存到数据库之前使用缓存快速检索它们。

所以,我正在考虑使用Proxy模式,并让缓存存储代理对象可以获取/序列化我的真实对象。

你知道任何可以与这些模式一起使用的缓存c#库吗?我自己也找不到任何东西。

由于

1 个答案:

答案 0 :(得分:0)

您正在寻找的是一个数据库。数据库引擎用于保持密钥表和对象表分离。 (如果您不熟悉该概念,请在Web上搜索有关数据库索引,主键等的信息。)还可以将密钥表的页面保存在RAM中,将最近使用的对象保存在RAM中。事实上,许多数据库引擎允许您配置每个RAM中保留的数量。我认为你应该使用带有轻量级ORM的Sqlite(如Dapper或ServiceStack.OrmLite或其他众多的一个)。 Sqlite有一个参数来关闭磁盘同步性和另外两个参数来调整RAM中的数据量。请参阅此处的信息:http://www.sqlite.org/pragma.html