按多个属性管理缓存集合

时间:2014-10-22 10:43:25

标签: c# .net caching

我有Sensor类,其中包含很少的属性:id, a, b。 另一个名为SensorCache的类,负责管理我的传感器集合的内存缓存。 SensorCache实现“缓存模式”,请参阅here

SensorCache以传统方式工作 - 每个传感器请求(id属性发出的请求)首先转到SensorCache

  • 如果它已经存在于内存中 - SensorCache将其返回
  • 如果不在内存中,它会从我的数据库中带来所需的传感器,保存到内存缓存对象(由`Dictionary'表示)并返回它。

目前,我的词典键基于Sensor.id字段。 我有一个新要求,即返回Sensor两个字段(ab)并保留我的缓存逻辑。

我的缓存对象目前是为单个属性(Sensor.id)搜索而构建的,所以我需要考虑能够通过2个不同选项在内存中搜索的新结构:Sensor.id或'Sensor.a'和'Sensor.b'对。

处理此问题的最佳方法是什么?

我想过拿两个不同的对象,每个对象用于各种搜索,但这种方法会消耗更多的内存(x2),所以我想在做之前先听一些其他的想法。

1 个答案:

答案 0 :(得分:0)

您可以编写一个单独的类来实现IEquatable并覆盖GetHashCode(有时您必须,以实现所需的性能)但在这个简单的情况下,听起来您可以使用{{ 3}},即Dictionary<Tuple<(type of a), (type of b)>, Sensor>