热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

内存缓存中的DotnetCore-默认过期时间是多少

如何解决《内存缓存中的DotnetCore-默认过期时间是多少》经验,为你挑选了1个好方法。

我在dotnet核心C#项目中使用MemoryCache。我正在使用它存储我从集合中读取的枚举列表(我想存储它,因为它使用反射来加载枚举,这需要时间)。

但是,由于我的收藏集不会改变,所以我根本不希望它过期。我怎么做?如果我没有设置任何过期时间(SlidingExpiration或Absolute Expiration),我的缓存将永不过期吗?



1> Chris Pratt..:

如果您未指定绝对和/或滑动到期时间,则该项目理论上将无限期保留缓存。实际上,持久性取决于两个因素:

    记忆压力。如果系统资源受限,并且正在运行的应用程序需要额外的内存,则可以从内存中删除缓存的项目以释放​​RAM。不过,您可以通过将条目的缓存优先级设置为来禁用此功能CacheItemPriority.NeverRemove

    内存缓存是进程绑定的。这意味着,无论出于何种原因重新启动服务器或应用程序重新启动,存储在内存缓存中的所有内容都将消失。另外,这意味着在Web场方案中,应用程序的每个实例将拥有自己的内存缓存,因为每个实例都是单独的进程(即使您只是在同一服务器上运行多个实例)。

如果您只关心一次真正执行操作,并且在应用程序关闭后甚至在应用程序的多个实例之间都保留结果,则需要对SQL Server或Redis等后备存储使用分布式缓存。


因为.NET Core MemoryCache实际上并不支持对内存压力的自动逐出。新建议是确定您自己的压缩参数,并根据需要手动启动它。如果您不这样做,那么您将继续消耗更多的内存并开始分页数据,从而使所有内容都进行爬网。
另请参见此处,“ CompactOnMemoryPressure”现在已过时:https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.extensions.caching.memory.memorycacheoptions.compactonmemorypressure?view=aspnetcore-2.2
推荐阅读
author-avatar
袁甲2012_498
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有