Кэширование результатов уровня доступа к данным

Я хочу выполнить кэширование на уровне доступа к данным, чтобы повысить производительность. Я решил, что буду использовать кеш HTTPContext со слоем абстракции поверх, чтобы я мог включать и выключать другие стратегии кэширования позже, если это необходимо.

По сути, кеш должен быть вариативным, что означает, что для каждого отдельного метода он будет кэшировать разные результаты на основе переданных значений.

На мой вопрос задано, что если я хочу иметь «кеш для каждой функции» и чтобы система определяла, следует ли попадать в базу данных или в кеш на основе значений, которые передаются в метод, как я могу это сделать (т.е. взяв хэш значений элементов или что-то в этом роде, но должен быть лучший способ).

Я знаю, что мог бы сделать кое-что со сквозными проблемами, EL и блоком приложений кэширования, но накладные расходы на это немного больше, чем я рассчитывал. Я хочу сделать что-то довольно легкое и что я могу контролировать (т.е. я мог бы передать параметр, который я мог бы проверить, например, чтобы обойти кеш)

Ура Энтони


person vdhant    schedule 28.08.2009    source источник


Ответы (1)


Для этого мы используем блок приложения кэширования корпоративной библиотеки. Entlib Cache работает как словарь с ключом и значением.

Кэш Entlib позволяет вам создавать несколько именованных кешей, в вашем случае это будет по одному на каждую функцию.

В каждом кэше вы можете использовать параметры в качестве ключа. Затем вы можете сделать это следующим образом:

  • Попробуйте получить значение из кеша на основе ключа.
  • Если значение равно null, оно отсутствует в кеше.
  • Поэтому возьмите значение из базы данных и поместите результат в кеш, чтобы он был доступен в следующий раз.
person Shiraz Bhaiji    schedule 28.08.2009