Я реализую кеш в библиотеке классов, которую использую в приложении asp.net.
Я создал свой объект кеша как одноэлементный шаблон со статическим методом для обновления кеша, который на самом деле просто загружает переменную/свойство-член с набором данных, которые мне нужно кэшировать (конечно, есть некоторая логика блокировки). Я подумал, что это хороший способ, поскольку я могу просто получить доступ к своим данным, позвонив
MyCacheObject.Instance.MyDataCollection
Я создаю новый объект кеша для хранения довольно большого объема данных, разделенных на некоторые ключи. Я имею в виду, что я создаю новый кеш, но он не будет загружать все данные сразу, а будет хранить коллекцию для каждого доступного ключа.
MyOtherCacheObject.Instance.MyOtherDataCollection(indexkey)
На этот раз был поднят вопрос о вывозе мусора. Поскольку я храню огромное количество данных, не будет ли напрасной тратой времени, если они внезапно будут удалены? Поскольку это всего лишь одноэлементный шаблон, ничто не гарантирует, что данные останутся в кеше.
Итак, мой вопрос: как лучше всего реализовать кеш для обработки этой ситуации? Мне действительно не нравится огромное сложное решение для этого, и я знаю, что в System.Web есть кеширование, но это кажется немного «неправильным», поскольку это просто библиотека классов, или что вы думаете?