c# - ConcurrentDictionary 作为缓存
问题描述
我有ConcurrentDictionary<string, SomeClass>
我用作未过期的缓存。我想定期从外部数据源更新它。我可以使用TryUpdate
或类似的方法来填充ConcurrentDictionary
. 但我也想删除一些不再存在于数据源中的值。
如何做到这一点?
我知道构建ConcurrentDictionary
使用Dictionary
作为源。但这不适用,因为我正在更新已经存在的ConcurrentDictionary
并且不能定期构建一个新的。
** 编辑 **
我可以分两步执行此操作
遍历 source
Dictionary
并调用TryUpdate
targetConcurrentDictionary
。遍历目标
ConcurrentDictionary
并删除源中不存在的每个键Dictionary
但如果有的话,我希望有更优雅的方式
解决方案
尝试让后台线程枚举 ConcurrentDictionary 并检查源。如果它不在源中,请将其从字典中删除。
推荐阅读
- django - 如何在 Django 应用程序和 React JS 应用程序之间执行单点登录?
- reactjs - 处理 react-hook-form 中的错误
- git - 修复错误的 git 状态(尝试重新应用隐藏的更改与冲突)
- arrays - 如何在 Json 字符串中隐藏没有记录的控件
- elasticsearch - X-Pack 401 Logstash 无法连接到 Elasticsearch
- php - 强制从 64 位 php 网站连接到 32 位访问数据库
- javascript - 从数组中删除重复值
- javascript - 在元素外单击时如何调用函数并避免在单击事件内触发单击?
- python - 根据验证条件创建布尔列
- android - 从 Sketch 导出到 SVG 不允许导入到 android studio