Если вам нравится читать статьи на Medium и вы заинтересованы в том, чтобы стать участником, я буду рад поделиться с вами своей реферальной ссылкой!



Кэширование является важной стратегией оптимизации производительности приложений. Этот подход заключается в хранении часто используемых или дорогостоящих данных в высокоскоростной системе хранения. Различные стратегии вытеснения из кэша определяют, какие элементы данных следует сохранять, а какие удалять из кэша. В этой статье основное внимание уделяется трем популярным стратегиям: «наиболее редко используемые» (LRU), «наименее часто используемые» (LFU) и «первым пришел – первым обслужен» (FIFO). Мы проиллюстрируем каждую стратегию примерами Golang с использованием пакета Redis.

Прежде чем мы продолжим, убедитесь, что вы установили пакет Redis для Go, запустив:

go get github.com/go-redis/redis

Политики выселения Redis

Точное поведение Redis при достижении предела maxmemory настраивается с помощью директивы конфигурации maxmemory-policy.

Доступны следующие политики:

  • noeviction: новые значения не сохраняются при достижении предела памяти. Когда база данных использует репликацию, это относится к первичной базе данных.
  • allkeys-lru: сохраняет последние использованные ключи; удаляет наименее использовавшиеся (LRU) ключи
  • allkeys-lfu: сохраняет часто используемые ключи; удаляет наименее часто используемые (LFU) клавиши
  • volatile-lru: Удаляет последние использованные ключи с полем expire, установленным на true.
  • volatile-lfu: удаляет наименее часто используемые ключи с полем expire, установленным на true.
  • allkeys-random: случайным образом удаляет ключи, чтобы освободить место для новых добавленных данных.
  • volatile-random: случайным образом удаляет ключи с полем expire, установленным на true.
  • volatile-ttl: удаляет ключи с полем expire, установленным на true, и самым коротким оставшимся значением времени жизни (TTL).