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