C# ConcurrentDictionary作为缓存
我有C# ConcurrentDictionary作为缓存,c#,C#,我有ConcurrentDictionary,我将其用作未过期缓存。我想从外部数据源定期更新它。 我可以使用TryUpdate或类似的方法来填充concurrentdirectionary。但我还想删除一些数据源中不再存在的值 如何做到这一点 我知道如何使用Dictionary作为源代码构建concurrentdirectionary。但这不适用,因为我正在更新现有的ConcurrentDictionary,并且无法定期构建新的词典 **编辑** 我可以分两步完成这个操作 迭代源字典并调用目标C
ConcurrentDictionary
,我将其用作未过期缓存。我想从外部数据源定期更新它。
我可以使用TryUpdate
或类似的方法来填充concurrentdirectionary
。但我还想删除一些数据源中不再存在的值
如何做到这一点
我知道如何使用Dictionary
作为源代码构建concurrentdirectionary
。但这不适用,因为我正在更新现有的ConcurrentDictionary
,并且无法定期构建新的词典
**编辑**
我可以分两步完成这个操作
字典
并调用目标ConcurrentDictionary
上的tryuUpdate
ConcurrentDictionary
并删除源字典中不存在的每个键
但我希望有一种更优雅的方式,如果存在的话尝试使用一个后台线程枚举ConcurrentDictionary并检查源代码。如果它不在源代码中,请将其从字典中删除。是否要安全地添加和删除(因为缺少更好的单词..原子地)?这与安全无关。这是关于自动删除缺少的键。在普通缓存中,未更新的实体将过期并被删除。在
concurrenticationary
中,实体将永远存在TryUpdate
将仅更新数据源中存在的实体。但是不会删除那些你写的还没有找到的东西…不能定期构建一个新的…。为什么不呢?因为我将ConcurrentDictionary
实例化为singleton,并将其用作DI中的依赖项。Project是基于Net Cype 2.2 MVC <代码> CONTURNCE字典在System.Runtime.Caching.MemoryCache
,它提供了开箱即用的功能。