У меня есть эффективное приложение С#, которое получает 80 байт данных со скоростью от 5k до 10k записей в секунду на многопоточном CPU.
Мне нужно настроить a в кэше памяти, чтобы обнаруживать и фильтровать повторяющиеся записи, чтобы я мог их подавить от дальнейшего перемещения по трубопроводу.
Характеристики кэша (максимальные пороги)
- 80 байт данных
- 10 000 записей в секунду
- 60 секунд кеша = количество клавиш = 60 000
- (общая сумма 48000000 байт = 48 МБ)
- Идеальный размер кеша = 5 минут (или 240 Мб)
- Допустимый размер кэша времени выполнения bloat = 1 ГБ
Вопрос
Каков наилучший способ настройки кэша в памяти, словаря, хеш-таблицы, массива и т.д., который позволит наиболее эффективный поиск, очистку старых данных кеша и предотвращение истечения удаленных данных.
Я посмотрел кэш ASP.Net, System.Runtime.MemoryCache, но думаю, что мне нужно что-то более легкое и настроенное для достижения правильной пропускной способности. Я также рассматриваю System.Collections.Concurrent в качестве альтернативы и этот связанный документ.
Есть ли у кого-нибудь предложения относительно наилучшего подхода?