Подтвердить что ты не робот

Как вы выбираете между Memcached, Redis и Varnish?

Я действительно очень смущен о Memcached, Redis и Varnish. Я знаю, что они используются для кэширования, но я не знаю, насколько они помогают, и как вы знаете, какой из них использовать.

И, наконец, я хотел бы знать, что вы будете использовать для сайта с загруженными пользователем изображениями и видео? Если это помогает, я использую среду Django.

4b9b3361

Ответ 1

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

Memcached и redis - это, фактически, серверы хранения данных, в частности серверы хранения ключей. С точки зрения python вы можете сказать, что это один огромный "словарь", вы устанавливаете значения с помощью ключа и извлекаете их по ключу. Есть несколько различий между ними обоими, вы можете просто Google memcached vs redis.

Ответ 2

Я использую Django и memcached, поэтому я могу сказать, как использовать этот. У меня есть некоторые данные, почти никогда не меняющиеся, для которых требуется небольшое количество времени (несколько секунд) для загрузки.
Кэширование их превратит секунды в доли секунды, поэтому время загрузки уменьшается в 10 раз.

Использование memcached очень просто:

  • Установите и запустите memcached для вашей ОС.

  • Настройте Django для использования в качестве механизма кеширования.
    В опции settings.py или эквивалентного набора BACKEND:
    'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache'

  • Хранить и извлекать данные из memcached:

    from django.core.cache import cache
    cache.set('myData',myData)
    # ... in another place:
    myData = cache.get('myData')
    if not myData:
         # re-calculate myData in case of a 'cache miss', then re-caching it.
         # myData = <calculations>
         cache.set('myData',myData)