Menu

Redis 統合

Redis は商用プロジェクトでよく使われるインフラストラクチャで、主にキャッシュ、レート制限、セッション保存など、ビジネスロジックと密接に関連する機能に使用されます。

NEXTY.DEV ボイラープレートは Redis をマルチプロバイダーで抽象化しており、以下の 2 つの動作モードを標準でサポートしています:

  • Upstash:REST API ベースのサーバーレス Redis。Edge / Cloudflare Workers などのランタイムと互換性があります。
  • ioredis:TCP 接続ベースの自宅ホスト Redis。Node.js サーバーや Vercel デプロイに適しています。

DEFAULT_REDIS_PROVIDER 環境変数でプロバイダーを選択します(デフォルトは upstash)。選択したプロバイダーの認証情報が設定されていない場合、関連機能は自動的にデグレードされ、他のビジネスロジックには影響しません。

注目すべき点 ボイラープレートには、メール購読機能にレートリミターのサンプルが含まれており、Redis の設定に基づいてレート制限を有効にするかどうかを自動的に判断します。

プロバイダーの選択

プロバイダーユースケース環境変数
upstash(デフォルト)サーバーレスデプロイ、Edge / Cloudflare WorkersUPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKEN
ioredisNode.js サーバー、Vercel、自宅ホスト / Coolify RedisREDIS_URL

Upstash の設定

  1. Upstash にアクセスし、メールアドレスでアカウントを登録します

  2. Dashboard ページに移動し、Create database ボタンをクリックします

Create database
Create database
Create database
  1. データベース詳細ページに入り、REST API モジュールで UPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKEN を環境変数にコピーします
upstash api
  1. DEFAULT_REDIS_PROVIDER=upstash に設定されているか、未設定のままにします(デフォルトは upstash

自宅ホスト Redis(ioredis)の設定

  1. Redis インスタンスを準備します。ローカル開発では redis://localhost:6379 を使用できます。本番環境では Coolify などのマネージド Redis を利用できます。詳細は Coolify での Redis デプロイ を参照してください。

  2. 接続先 URL を REDIS_URL に書き込み、プロバイダーを設定します:

DEFAULT_REDIS_PROVIDER=ioredis
REDIS_URL=redis://localhost:6379

注意 ioredis は Node.js の net モジュールに依存しているため、Edge や Cloudflare では動作しません。これらのランタイムでは Upstash プロバイダーを使用してください。

検証

これで、ページフッターでメール購読を再度送信してみましょう:

  • Upstash を使用する場合は、Upstash Redis の Data Browser ページを確認します。新しいデータがあれば、購読レートリミターが動作していることを意味します。
  • ioredis を使用する場合は、redis-cli または RedisInsight で対応する key を確認します。
upstash data browser

二次開発

業務コードは lib/redis から統一してインポートします:

import { redis, checkRateLimit, getClientIPFromRequest } from "@/lib/redis";
  • redis:統一 Redis クライアント。getsetincrsaddsremsismember などのメソッドを提供します。
  • checkRateLimit:現在のプロバイダーに応じてレート制限チェックを実行します(Upstash はスライディングウィンドウ、ioredis は固定ウィンドウ)。
  • getClientIPFromRequest / getClientIPFromHeaders:クライアント IP を取得します。

プロバイダー固有のネイティブ機能が必要な場合は、upstashRedis または ioRedis をエクスポートして使用できます。