用于缓存应用程序的MemoryMappedFile和b-tree

时间:2011-10-27 19:34:54

标签: c# memory-mapped-files

这只是一个想法,我还没有任何代码,我需要一些设计建议。我将使用c#中的MemoryMappedFile实现一个缓存(在第一个实例中不分发)。我认为将b树作为不定结构会很好,但这也是值得商榷的。 所以问题是:

  • 当暂停支持是内存映射文件时,B树是否是用于快速搜索项目的好策略?
  • 我们对内存映射文件有什么提示和技巧?视图可以有多大,当它太小或太大时会有什么缺点?
  • 多线程考虑:我们如何处理内存映射文件和并发?缓存应该被客户高度重视,什么策略更好地拥有高效的东西?

当@Internal Server Error询问时,我将问题与此集成: 键将是一个字符串,大约64个字符最大len。数据将是一个大约1024字节长的字节[],但考虑平均值为128字节或更好:我想要缓存的是OR / M实体,让我们考虑像BSOn串行器这样的字节序列化实体有多长

1 个答案:

答案 0 :(得分:1)

  • B-Tree很好(带有内存映射文件),但如果文件并不总是完全保存在常驻内存中,那么页面对齐的B + Tree要好得多。 See also
  • 内存映射文件的技巧是使用64位架构,以便您可以将整个文件映射到内存中,否则您只需要映射部件,缓存的read可能是快于mmap s。
  • 在共享内存上尝试CAS(比较和交换)。 See also