CLI を使用した Heroku Data for Redis の管理
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2023年01月06日(金)
Table of Contents
Heroku Data for Redis は Heroku CLI に直接統合されており、Redis インスタンスを管理するためのいくつかのコマンドを持っています。
redis:info
アプリケーションによってプロビジョニングされているすべての Redis インスタンスを表示し、それぞれの特徴を確認するには、heroku redis:info
コマンドを使用します。
$ heroku redis:info
=== maturing-deeply-2628 (REDIS_URL)
Plan Premium 0
Status Available
Created 2015-03-26 23:40 UTC
Timeout 60
Maxmemory volatile-lru
Maintenance window Mondays 22:30 to Tuesdays 02:30 UTC
Persistence AOF
=== maturing-calmly-4191 (HEROKU_REDIS_AMBER_URL)
Plan Premium 1
Status Available
Created 2015-03-20 23:40 UTC
Timeout 0
Maxmemory noeviction
Maintenance window Mondays 22:30 to Tuesdays 02:30 UTC
Persistence AOF
redis:cli
リモートの Redis インスタンスとの Redis CLI セッションを確立するには、heroku redis:cli
を使用します。インスタンスを指定しない場合、REDIS_URL にあるインスタンスがデフォルトで使用されます。
$ heroku redis:cli -a myapp -c myapp
Connecting to maturing-deeply-2628 (REDIS_URL):
ec2-54-221-206-137.compute-1.amazonaws.com:6379> PING
PONG
ec2-54-221-206-137.compute-1.amazonaws.com:6379>
複数のインスタンスがある場合は、接続先のインスタンスを指定します。簡単な指定方法として、HEROKU_REDIS_<color>
環境設定名をコマンドの最初の引数として指定するか、リソース名 maturing-deeply-2628
を指定することができます。
$ heroku redis:cli HEROKU_REDIS_AMBER
$ heroku redis:cli maturing-deeply-2628
redis:credentials
Heroku Data for Redis は、インスタンスの資格情報および場所への便利なアクセスを提供します。これにより、GUI を使用してインスタンスにアクセスすることが簡単になります。
インスタンス名の引数は、redis:credentials
コマンドで指定する必要があります。プライマリデータストアには REDIS_URL を使用します。
$ heroku redis:credentials REDIS_URL
redis://h:pfl0cfuvr58fhsduesr9kau765k@ec2-54-221-206-137.compute-1.amazonaws.com:6379
セキュリティ対策上、重要なサービスの資格情報は定期的にローテーションすることをお勧めします。Heroku Data for Redis では、heroku redis:credentials --reset
を使用して資格情報をローテーションします。
$ heroku redis:credentials HEROKU_REDIS_GRAY_URL --reset
このコマンドを実行すると、インスタンスに新しい資格情報が作成され、Heroku アプリケーションの関連する環境設定が更新されます。
現在実行中のタスクが完了するまで、開いているすべての接続は開いたままになります。この動作は、本番環境で実行中のすべてのバックグラウンドジョブあるいはその他の Worker が突然終了し、システムが不整合な状態にならないようにするためのものです。資格情報のローテーションは実行されたが、dyno がまだ新しい環境設定の値で再起動されていないうちに開かれた新しい接続はすべて失敗します。
redis:promote
複数の Redis インスタンスがプロビジョニングされている設定では、多くの場合、インスタンスをプライマリロールにプロモートすることが必要です。インスタンスは、heroku redis:promote
コマンドを使用してプロモートできます。
$ heroku redis:promote shining-surely-6441 -a myapp
Promoting shining-surely-6441 to REDIS_URL on myapp
redis:promote
は、REDIS_URL
環境設定の値 (アプリケーションが接続のために使用する値) を新しくプロモートされたインスタンスの URL に変更し、アプリを再起動します。古いプライマリ Redis インスタンスの場所には、その HEROKU_REDIS_COLOR_URL
設定から引き続きアクセスできます。
プロモート後も、デモートしたインスタンスは依然としてプロビジョニングされており、料金が発生します。不要な場合は、heroku addons:destroy maturing-deeply-2628
で削除します。
redis:timeout
アイドル接続を強制終了する前に Redis が待機する秒数を変更するには、redis:timeout
コマンドを使用します。
$ heroku redis:timeout maturing-deeply-2628 --seconds 60
Timeout for maturing-deeply-2628 (REDIS_URL) set to 60 seconds.
Connections to the redis instance will be stopped after idling for 60 seconds.
redis:maxmemory
インスタンスがそのストレージ制限に達したときに使用されるキーエビクションポリシーを変更するには、redis:maxmemory
コマンドを使用します。
$ heroku redis:maxmemory maturing-deeply-2628 --policy volatile-lru
Maxmemory policy for maturing-deeply-2628 (REDIS_URL) set to volatile-lru.
volatile-lru evicts keys trying to remove the less recently used keys first, but only those that have an expiry set.
redis:keyspace-notifications
Heroku Data for Redis では、キー空間通知がサポートされています。これを設定するには、redis:keyspace-notifications
コマンドを使用します。
$ heroku redis:keyspace-notifications maturing-deeply-2628 --config AKE
Keyspace notifications for maturing-deeply-2628 (REDIS_URL) set to 'AKE'.
いくつかの設定を使用できます。詳細は、「heroku help redis:keyspace-notifications
」を参照してください。
redis:stats-reset
Heroku Data for Redis インスタンスに関する統計をリセットします。この記事では、リセットされる統計の概要を示しています。
$ heroku redis:stats-reset maturing-deeply-2628
▸ WARNING: Irreversible action.
▸ All stats covered by RESETSTAT will be reset on maturing-deeply-2628.
▸ To proceed, type sushi or re-run this command with --confirm sushi
> sushi
Stats reset successful.