Heroku RedisMaxmemoryポリシー

Herokuは、25MBのメモリを無料で提供する優れたRedisアドオンを提供します。

この量のストレージは、何を保存しているかにもよりますが、わずか数千のアイテムで簡単に満たすことができます。

Herokuには、という構成オプションがありますmaxmemory-policyこれは、Redisデータベースメモリがいっぱいになったときにシステムがどのように動作するかを決定します。

デフォルトでは、このプロパティはに設定されていますnoeviction、これは、より多くのデータを保存しようとすると、Redisがエラーを発生させることを意味します。

これは、何が起こっているのかを理解するために行われます。この動作を変更できることがわかったら、次は決定します。どうやって

さまざまな動作はRedis自体によって提供され、次のとおりです。

  • noeviction:メモリ制限に達し、クライアントがより多くのメモリを使用する可能性のあるコマンドを実行しようとすると、エラーを返します(ほとんどの書き込みコマンドですが、DELといくつかの例外があります)。
  • allkeys-lru:追加された新しいデータ用のスペースを確保するために、使用頻度の低い(LRU)キーを最初に削除して、キーを削除します。
  • volatile-lru:追加された新しいデータ用のスペースを確保するために、使用頻度の低い(LRU)キーを最初に削除しようとしますが、有効期限が設定されているキー間でのみキーを削除します。
  • allkeys-random:追加された新しいデータ用のスペースを確保するために、キーをランダムに削除します。
  • volatile-random:追加された新しいデータ用のスペースを確保するためにキーをランダムに削除しますが、有効期限が設定されているキーのみを削除します。
  • volatile-ttl:新しいデータを追加するためのスペースを確保するために、有効期限が設定されたキーを削除し、最初に存続時間(TTL)が短いキーを削除しようとします。

ニーズに最適なケースを見つけるのはあなた次第です。候補者が決まったら、HerokuCLIを使用して変更を適用できます。次に例を示します。

heroku redis:maxmemory YOUR_REDIS_INSTANCE_NAME --policy volatile-lru