Класс и интерфейс кэша не имеют никаких методов для очистки ни того, ни другого для перебора ключей, поскольку он не предназначен для использования в качестве списка, а в приложениях ASP.NET Core обычно используется интерфейс IDistributedCache
в качестве зависимости, посколькуэто позже позволяет вам позднее перейти из локального кэша в распределенный (например, memd или Redis).
Вместо этого, если вы хотите аннулировать определенную строку, вы должны удалить кэшированную запись через cache.Remove(myKey)
.
Конечно, для этого необходимо знать ключ, который вы хотите аннулировать.Обычно вы делаете это через события.Каждый раз, когда вы обновляете запись в базе данных, вы запускаете событие.Это событие будет перехвачено фоновой службой и приведет к аннулированию кэша.
Локально это может быть сделано с любой библиотекой pub / sub.В распределенных сценариях вы можете использовать функции публикации / вложенности распределенного кэша (т. Е. Redis).
В случае таблиц поиска (где затрагиваются многие значения), вы можете иметь службу обновления кэша (т. Е.каждые 5-10 минут с помощью фоновой задачи с использованием библиотеки расписаний, такой как hangfire или quart.net).
Вопросы по домашней работе
Но один вопрос, который вы должны задать себе: действительно ли полезно кэшировать документы в течение 24 часов, если они часто меняются?
Загружается ли загрузкаОдин документ занимает столько времени, что его кеширование будет стоить 24 часа?Или более короткие времена достаточно хороши (15, 30, 60 минут)?