首页 > 解决方案 > ConcurrentDictionary 作为缓存

问题描述

我有ConcurrentDictionary<string, SomeClass>我用作未过期的缓存。我想定期从外部数据源更新它。我可以使用TryUpdate或类似的方法来填充ConcurrentDictionary. 但我也想删除一些不再存在于数据源中的值。

如何做到这一点?

我知道构建ConcurrentDictionary使用Dictionary作为源。但这不适用,因为我正在更新已经存在的ConcurrentDictionary并且不能定期构建一个新的。

** 编辑 **

我可以分两步执行此操作

  1. 遍历 sourceDictionary并调用TryUpdatetarget ConcurrentDictionary

  2. 遍历目标ConcurrentDictionary并删除源中不存在的每个键Dictionary

但如果有的话,我希望有更优雅的方式

标签: c#

解决方案


尝试让后台线程枚举 ConcurrentDictionary 并检查源。如果它不在源中,请将其从字典中删除。


推荐阅读