.NET Core MemoryCache缓存批量获取Key或者删除
.Net Core下使用缓存,除了大家耳熟能详的Redis做分布式缓存外,本地内存缓存也会一起结合来使用,它存取更快,使我们的应用达到极致性能要求。这也是我们经常提到的3级或者4级缓存,每一层都有自己的使用场景,优缺点,结合业务特点来选择合适的才是王道。
这里我们就使用Net原生的 Microsoft.Extensions.Caching.Memory.IMemoryCache 来实现本机内存缓存的一些延展问题进行探讨。该接口实现可以参考源代码:
接口公开了几个常用的方法:
其中,根据缓存键值来清理缓存用的比较频繁,前提是要精确找到曾经使用的Key名称或者集合,再来逐个清理。业务上有时候我们希望能根据一些特征,批量把一批Key来移除掉,这个时候就找不到枚举缓存Key集合的方法了,网上有也有很多示例:
但是执行时找不到"_entries"属性了,接口调整了内部逻辑,继续查找上述源代码发现:
说明"_entries"属性被移动到 “_coherentState”属性里面了,我们可以据此修改上述获取Key的代码:
先反射获取_coherentState 属性对象,再接着找里面的缓存键集合,如此就可以批量获取到Key集合了。若需要按照特殊前缀来模糊清理,可以类似下面写法实现:
请注意,使用反射来访问内部字段可能会受到版本更新的影响,因为这些字段可能会在不同的.NET Core版本中发生变化。因此,这种方法可能需要随着.NET Core的更新而进行调整。此外,由于这种方法涉及到内部实现,它可能会在未来的版本中被弃用或更改。在生产环境中,建议使用官方提供的API来操作缓存,以确保代码的稳定性和兼容性。
__EOF__

本文链接:https://www.cnblogs.com/pccai/p/17956314.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2008-01-10 安装Project Server2007出现错误