Политика Heroku Redis Maxmemory

Heroku предлагает отличный аддон Redis, который бесплатно предоставляет 25 МБ памяти.

Этот объем хранилища можно легко заполнить всего несколькими тысячами элементов, в зависимости от того, что вы храните.

В Heroku есть опция конфигурации под названиемmaxmemory-policyкоторый определяет, как система будет вести себя при заполнении памяти базы данных Redis.

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

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

Сам Redis предоставляет различные варианты поведения, а именно:

  • noeviction: возвращать ошибки, когда был достигнут предел памяти, и клиент пытается выполнить команды, которые могут привести к использованию большего объема памяти (большинство команд записи, кроме DEL и еще несколько исключений).
  • allkeys-lru: выселять ключи, пытаясь сначала удалить менее используемые (LRU) ключи, чтобы освободить место для новых добавленных данных.
  • volatile-lru: выселить ключи, пытаясь сначала удалить менее недавно использованные (LRU) ключи, но только среди ключей, для которых установлен срок действия, чтобы освободить место для новых добавленных данных.
  • allkeys-random: выселять ключи случайным образом, чтобы освободить место для добавления новых данных.
  • volatile-random: выселять ключи случайным образом, чтобы освободить место для новых добавленных данных, но выселять только ключи с установленным сроком действия.
  • volatile-ttl: выселить ключи с установленным сроком действия и сначала попытаться выселить ключи с более коротким временем жизни (TTL), чтобы освободить место для новых добавленных данных.

Вам решать, какой чехол лучше всего подходит для ваших нужд. Когда у вас есть кандидат, вы можете применить изменение с помощью интерфейса командной строки Heroku, например:

heroku redis:maxmemory YOUR_REDIS_INSTANCE_NAME --policy volatile-lru