Skip to content

Latest commit

 

History

History
113 lines (77 loc) · 6.7 KB

CACHE.MD

File metadata and controls

113 lines (77 loc) · 6.7 KB

1. В чём разница между Memcache и Redis

Memcache и Redis оба хранят данные в памяти.

Memcache более простой инструмент для хранения данных в памяти как key-value

Redis более сложный инструмент который поддерживает: сохранение данных на диск, богатый набор функций (транзакции , подписки, хэш таблицы), репликации и кластеризации данных

2. С какими подводными камнями при кэшировании сталкивались

Консистентность данных

Когда данные кэшируются, существует риск расхождения данных между кэшем и источником данных.

Инвалидация кэша

Когда данные в источнике данных изменяются или устаревают, необходимо обновить соответствующие данные в кэше.

Проблемы с производительностью

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

Синхронизация кэша

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

Потеря данных

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

Конкуренция за ресурсы

Если множество запросов одновременно обращается к кэшу, может возникнуть конкуренция за ресурсы.

3. Memcached - зачем нужен, какие есть подводные камни, пути их решения.

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

Подводные камни при работе:

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

Пути их решения
  • Оптимизация использования памяти

Можно мониторить использование памяти в Memcached и оптимизировать размеры хранимых данных или реализовать стратегию устаревания данных для удаления неиспользуемых записей.

  • Репликация и перезапуск

Можно настроить репликацию Memcached, чтобы иметь резервные копии данных в случае сбоев.

  • Инвалидация кэша

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

  • Координация и синхронизация

Разработайте соответствующие механизмы синхронизации и координации для обновления данных в Memcached

4. Алгоритмы вытеснения кеширования

  • По количеству обращений
  • По частоте обращений
  • LIFO и FIFO
  • Hot cache

5. Как решить проблему инвалидация кеширования?

С помощью тегов

6. Как кешировать на стороне клиента?

  • CDN, модели push (самому нужно выбирать контент который заранее загружать) и pull (запрос от клиента)

7. Какие данные есть в Redis

  • Строки (Хранение часто запрашиваемых данных для быстрого доступаб счётчики)
  • Хэши (Хранение данных о пользователях, таких как имя, возраст, адрес)
  • Списки - упорядоченные коллекции строк (Очереди)
  • Множества - неупорядоченные коллекции уникальных строк (Хранение уникальных тегов или категорий.)
  • Отсортированные множества (Хранение и сортировка очков игроков)
  • Битмапы (Отслеживание активности пользователей по дням)
  • Гиперлоглоги (Подсчет уникальных посетителей или событий)
  • Потоки (Хранение и обработка последовательности событий)

8. Почему не стоить хранить данные о балансе пользователей в Redis?

  • Отсутствие гарантированной устойчивости данных
  • Проблемы с согласованностью данных
  • Ограниченная транзакционная поддержка
  • Высокая стоимость оперативной памяти

Назад