一个简单的MemoryCache的实现

Posted simon麦田

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个简单的MemoryCache的实现相关的知识,希望对你有一定的参考价值。

工作中需要用到内存缓存,最开始打算用个的是.net自带的MemoryCache这么个东西,用的时候发现在服务端有时会莫名其妙的丢失缓存并且丢失后就缓存不上了。本来网上关于使用MemoryCache的不多,一直也没有找到原因和解决办法,所以就自己仿着它写了一个简单的实现。


首先看下目录结构


其中:

ChangeMoniter:是缓存对象的过期策略的检测器,包括文件改变监视器(FileChangeMoniter)和时间改变监视器(TimeChangeMoniter)

IMoniter:监视器接口,用来实现自定义扩展的监视器

IRemoveCache:定义了调用了MemoryCache回调函数删除缓存对象的接口。

MemoryCache:内存缓存类。

MemoryCacheEntry:缓存对象类。

MemoryCachePolicy:缓存过期策略类。

MemoryCacheManager:缓存管理器类。


FileChangeMoniter

主要是用来实时监控文件的改变,一但文件改变,会在判断缓存对象是否存在时主动删除缓存对象。

以上是关于一个简单的MemoryCache的实现的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core 2.0迁移技巧之MemoryCache问题修复

MemoryCache 如何清除全部缓存?

MemoryCache 使用不当导致的一个 BUG

支持区域的 MemoryCache?

如何清除 System.Runtime.Caching.MemoryCache

停止 MemoryCache 调用的重入