Я использую так кеш.
Cache.Get("prefix_"+xxx+"_"+yyyy);
Cache.Insert("prefix_"+xxx+"_"+yyyy, data, null, DateTime.Now.AddSeconds(1), Cache.NoSlidingExpiration, CacheItemPriority.High, null);
Это значительно снизило нагрузку на БД.
Но данные часто меняются и переполучать раз в 1 секунду не совсем правильно.
Есть скрипт отвечающий за обновление. Когда я его запускаю, то все yyyy, при определенном xxx становятся не актуальны.
Пример информациии в кеше.
prefix_1000_34
prefix_1000_36
prefix_1000_37
prefix_1000_39
prefix_1000_51
prefix_2000_34
prefix_2000_39
prefix_2004_18
prefix_2004_25
prefix_2004_48
При запросе с параметром 2000 неактуальными становятся только: prefix_2000_34, prefix_2000_39. Остальные силу свою не теряют.
Я видел CacheDependency, которые зависят от БД или от файла, но мне не нужно это.
Мне нужно, что бы в один прекрасный момент некоторый набор данные в кеше сделать неактуальными.
У меня нет идей как их выделять.
Единственное что мне пришло в голову, это использовать файл и изменять его когда данные становятся не актуальными.
Но я думаю, есть более нормальный вариант.