Этот вопрос проверяет, понимаете ли вы, зачем нужен кэш и какие базовые способы его реализации существуют.
Кэширование используют, чтобы не выполнять повторно дорогие операции. В Python кэш можно хранить в памяти, на диске или во внешнем хранилище. Самые простые варианты — словари и functools.lru_cache. Для приложений часто используют Redis или Memcached. Выбор подхода зависит от объема данных и времени их жизни.
Кэширование — это компромисс между скоростью, памятью и актуальностью данных. В Python есть несколько распространенных подходов.
Определение: Кэш — это временное хранилище данных, которое позволяет быстрее получать результат повторных вычислений или запросов.
Перед перечислением важно отметить: нет универсального решения, все зависит от контекста.
Самый простой и быстрый вариант.
Используется обычный dict
Подходит для небольших объемов данных
Кэш очищается при перезапуске программы
Пример:
cache = {}
def get_user(user_id):
if user_id not in cache:
cache[user_id] = load_user_from_db(user_id)
return cache[user_id]
lru_cacheВстроенный инструмент для кэширования результатов функций.
Ограничивает размер кэша
Автоматически удаляет старые значения
Отлично подходит для чистых функций
from functools import lru_cache
@lru_cache(maxsize=128)
def fib(n):
if n < 2:
return n
return fib(n - 1) + fib(n - 2)
Используется, если данные большие
Медленнее памяти, но переживает перезапуск
Часто реализуется через файлы или sqlite
Общий кэш для нескольких процессов или сервисов
Поддержка TTL (время жизни данных)
Часто используется в веб-приложениях
Локальные вычисления → lru_cache
Простой скрипт → словарь
Веб-приложение → Redis
Долговременные данные → диск
Кэширование в Python можно реализовать на разных уровнях — от простого словаря до внешнего сервиса, и правильный выбор зависит от нагрузки и требований к данным.