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

本文关键字:缓存 应用程序 用于 b-tree MemoryMappedFile | 更新日期: 2023-09-27 18:12:40

这只是一个想法,我还没有任何代码,我需要一些设计建议。我将通过使用c#中的MemoryMappedFile实现缓存(非分布式)。我认为用b树作为底层结构是很好的,但这也是有争议的。问题是:

  • 当延迟支持是内存映射文件时,B-tree是用于快速搜索项的好策略吗?
  • 对于内存映射文件,我们有什么技巧和技巧?视图可以多大,太小或太大有什么缺点?多线程考虑:我们如何处理内存映射文件和并发?缓存应该被客户端高度访问,什么策略是更好的有一些性能?

作为@内部服务器错误问,我整合这个问题:Key将是一个字符串,大约64个字符,最大长度。数据将是一个字节[],大约1024字节长,但考虑到128字节的平均值,或者更好:我想要缓存的是or/M实体,让我们考虑用BSOn序列化器之类的东西序列化实体的字节长度。

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

  • B-Tree很好(对于内存映射文件),但如果文件并不总是完全保存在驻留内存中,那么对齐页面的B+Tree要好得多。也看到。
  • 内存映射文件的技巧是使用64位架构,这样你就可以将整个文件映射到内存中,否则你必须只映射部分,缓存的read可能比mmap更快。
  • 在共享内存上尝试CAS(比较和交换)。也看到。