ConcurrentDictionary作为缓存

时间:2019-04-12 02:45:38

标签: c#

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

如何实现?

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

**编辑**

我可以分两步进行此操作

  1. 遍历源Dictionary并在目标TryUpdate上调用ConcurrentDictionary

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

但是我想以一种更优雅的方式呈现

1 个答案:

答案 0 :(得分:0)

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