HerokuでNode+Redis(ioredis)を使えるようにするまでの手順

公式サイトに手順書があったのでその通りに進めました。

Heroku Data for Redis | Heroku Dev Center
Heroku Data for Redis は、本番環境の Redis サービスに、ローカルコマンドラインアクセス、指標、およびログを提供するアドオンです。

heroku-redisのインストール

CLIで、heroku-redisアドオンの追加コマンドを実行します。
アドオンは無料枠がありますが、追加するためにはクレジットカード登録が必要となります。
登録がないと以下のように促されるため、Herokuの管理画面からクレジットカードを登録します。

% heroku addons:create heroku-redis:hobby-dev -a your-app-name
Creating heroku-redis:hobby-dev on ⬢ your-app-name... !
 ▸    Please verify your account to install this add-on plan (please enter a credit card) For more information, see https://devcenter.heroku.com/categories/billing Verify now at https://heroku.com/verify


クレカの登録方法は以下に書きました。

登録すると、heroku-redisアドオンの追加が成功しました。

% heroku addons:create heroku-redis:hobby-dev -a your-app-name
Creating heroku-redis:hobby-dev on ⬢ your-app-name... free
Your add-on should be available in a few minutes.
! WARNING: Data stored in hobby plans on Heroku Redis are not persisted.
redis-convex-78430 is being created in the background. The app will restart when complete...
Use heroku addons:info redis-convex-78430 to check creation progress
Use heroku addons:docs heroku-redis to view documentation

ちなみに無料枠のスペックはこんな感じです。
あまり無茶をするとあっという間に制限にかかりそう。

https://devcenter.heroku.com/ja/articles/heroku-redis

redisの作成にはしばらく時間がかかります。
Herokuの管理画面またはCLIからステータスを確認することができます。

% heroku addons:info redis-convex-78430
=== redis-convex-78430
Attachments:  your-app-name::REDIS
Installed at: Sun Jul 31 2022 15:20:40 GMT+0900 (日本標準時)
Owning app:   your-app-name
Plan:         heroku-redis:hobby-dev
Price:        free
State:        creating #作成中

Stateが「created」になれば、作成完了です。

% heroku addons:info redis-convex-78430
=== redis-convex-78430
Attachments:  your-app-name::REDIS
Installed at: Sun Jul 31 2022 15:20:40 GMT+0900 (日本標準時)
Owning app:   your-app-name
Plan:         heroku-redis:hobby-dev
Price:        free
State:        created #作成完了

redisの接続URLを確認します。
2つありますが、TLS接続の「REDIS_TLS_URL」の方を使うのが推奨とのことです。

% heroku config | grep REDIS
REDIS_TLS_URL: rediss://:pf*****@ec2-**-***-**-***.compute-1.amazonaws.com:29150
REDIS_URL:     redis://:pf*****@ec2-**-***-**-***.compute-1.amazonawNs.com:29149

以下は参考文書です。

https://devcenter.heroku.com/ja/articles/heroku-redis-hobby-deprecation#updates-to-your-add-on-configuration

Nodeのioredisパッケージをインストール

Nodeからredisにアクセスするためにioredisパッケージをインストールします。
redisパッケージでもよいですが、async/awaitが使えておすすめとのことなのでこちらにしました。

% npm install ioredis

added 9 packages, and audited 129 packages in 3s

17 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
npm notice 
npm notice New minor version of npm available! 8.13.2 -> 8.15.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.15.1
npm notice Run npm install -g npm@8.15.1 to update!
npm notice

% npm list
your-app-name@1.0.0 /Users/user-name/develop/heroku/your-app-name
├── ioredis@5.2.2

ioredisの使い方

Nodeからの接続は以下のような感じでできます。

const Redis = require("ioredis");

const client = new Redis(process.env.REDIS_TLS_URL, {
    tls: {
        rejectUnauthorized: false
    }
});

〜REDISへの読み書き〜

client.disconnect();

ioredisの使い方は以下が詳しいです。

Heroku Data for Redis | Heroku Dev Center
Heroku Data for Redis は、本番環境の Redis サービスに、ローカルコマンドラインアクセス、指標、およびログを提供するアドオンです。

redis:cliを使うと、herokuのredisをcliから操作することができます。
Nodeから意図したデータの読み書きができているかの確認やデバッグに大変便利です。

% heroku redis:cli -a your-app-name

redisコマンドリファレンスは以下が使いやすかったです。

コマンドリファレンス — redis 2.0.3 documentation

コメント

タイトルとURLをコピーしました