Наш проект использует Entity Framework и имеет 2 типа кеша (в памяти, Redis) без поставщика кеша. Из-за отсутствия поддержки кеша второго уровня в EF мы внедрили его сами. Таким образом, наш кеш в памяти - это простой набор пары значений ключа, где ключ - Id кеша, а значение - это кешированный объект. Мы также реализовали аналогичное кэширование для использования Redis. Для запроса мы рассмотрим список кэшей в памяти и, если это не тот, мы смотрим на redis, а если его нет, мы запрашиваем базу данных.
Поскольку сущностные сущностные сущности имеют ссылку на контекст, мы не можем использовать объект DbContext
в кешировании, и нам нужно его сопоставить. Поэтому нам нужно создать много DTO.
Я знаю, что кеш сквозная проблема, поэтому я ищу более чистое решение. По этой причине сначала я решил использовать Memcached для In-Memory (вместо простого списка). Второй и, самое главное, я могу перейти от EF к NHibernate для поддержки второго кэша. Я знаю, что кеш первого уровня занят объектом сеанса. Поэтому я хочу использовать Memcached для кеша второго уровня. Но есть ли для Redis кеш третьего уровня?