对象缓存,键数不受限制,但对象数有限

本文关键字:对象 受限制 缓存 | 更新日期: 2023-09-27 18:26:08

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

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

我基本上需要处理比我在内存中所能保存的更多的T对象,并且我想在将结果保存到数据库之前使用缓存快速检索它们。

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

你知道有什么缓存c#库可以与这些模式一起使用吗?我自己什么也没找到。

感谢

对象缓存,键数不受限制,但对象数有限

您要查找的是一个数据库。数据库引擎是为了将键表和对象表分开而设计的。(如果你不熟悉这个概念,可以在网上搜索数据库索引、主键等信息。事实上,许多数据库引擎允许您配置每个引擎在RAM中的存储量。我认为您应该将Sqlite与轻量级ORM一起使用(如Dapper或ServiceStack.OrmLite或其他众多ORM之一)。Sqlite有一个参数用于关闭磁盘同步性,另外两个参数用于调整RAM中的数据量。查看此处的信息:http://www.sqlite.org/pragma.html