Нужен эффективный кэш в памяти, способный обрабатывать от 4 до 7 тысяч операций поиска или записи в секунду

У меня есть эффективное приложение C#, которое получает 80 байт данных со скоростью от 5 до 10 тысяч записей в секунду на многопоточном процессоре.

Теперь мне нужно настроить кэш-память для обнаружения и фильтрации дубликатов записей, чтобы я мог запретить им перемещаться дальше по конвейеру.

Спецификации кэша (максимальные пороги)

  • 80 байт данных
  • 10 000 записей в секунду
  • 60 секунд кэша = количество ключей = 60 000
  • (суммарный итог 48000000 байт = 48 Мб)
  • Идеально размер кэша = 5 минут (или 240 МБ)
  • Допустимый размер кэша во время выполнения = 1 ГБ

Вопрос

Как лучше всего настроить кэш в памяти, словарь, хеш-таблицу, массив и т. д., которые будут обеспечить наиболее эффективный поиск, очистку старых данных кэша и предотвратить истечение срока действия пораженных данных.

Я просмотрел ASP.Net Cache, System.Runtime.MemoryCache, но думаю, что мне нужно что-то более легкое и индивидуальное для достижения правильной пропускной способности. Я также рассматриваю System.Collections.Concurrentв качестве альтернативы и этот соответствующий технический документ.

Кто-нибудь может предложить лучший подход?

11
задан goodguys_activate 12 May 2012 в 14:25
поделиться