🛢️
Upstash Redisを触ってみた
Upstashとは
Upstash は、サーバーレス向けのデータプラットフォームを提供するサービスです。Redis、Vector、QStash、Kafkaなどを展開しています。
Upstash Redisとは
Upstashが提供するサーバーレス向けRedisサービスです。
通常のRedisはTCP接続でアクセスしますが、Upstash RedisはHTTPベースのREST APIでアクセスします。そのため、Cloudflare Workersなどのエッジ環境でも利用でき、コネクションプールの管理も不要です。
主な特徴
1. HTTPベースのアクセス
REST APIでアクセスできるため、TCP接続が使えない環境でも利用可能です。
# curlで直接アクセスも可能
curl -H "Authorization: Bearer <TOKEN>" https://xxx.upstash.io/incr/count
@upstash/redis SDKを使えばより簡単です:
import { Redis } from '@upstash/redis';
const redis = new Redis({
url: 'https://xxx.upstash.io',
token: 'your-token',
});
// 普通のRedisコマンドが使える
await redis.set('key', 'value');
const value = await redis.get('key');
2. 従量課金制(月額上限あり)
| プラン | 料金 | コマンド数 | ストレージ |
|---|---|---|---|
| 無料 | $0 | 月500K | 256MB |
| 従量課金 | 100Kコマンドあたり$0.2 | 無制限 | 100GB |
| 固定料金 | $10/月〜 | 無制限 | 250MB〜 |
3. グローバルレプリケーション
世界8リージョン以上にデータをレプリケート可能です。ユーザーに近いリージョンから低レイテンシでアクセスできます。
4. 見やすいダッシュボード
Upstash Consoleでは、コマンド数・帯域幅・ストレージ・コストが一目で確認できます。Write/Readの内訳や、上限に対する使用率もプログレスバーで表示されるため、利用状況の把握がしやすいです。

セットアップ(3ステップ)
1. アカウント作成
Upstash Console でアカウントを作成
2. データベース作成
コンソールから「Create Database」でRedisデータベースを作成
3. SDKをインストール
npm install @upstash/redis
import { Redis } from '@upstash/redis';
const redis = new Redis({
url: process.env.UPSTASH_REDIS_REST_URL,
token: process.env.UPSTASH_REDIS_REST_TOKEN,
});
以上で準備完了です。
ローカル開発環境の構築
本番環境はUpstashを使いつつ、ローカル開発では無料のRedisを使いたい場合があります。
hiett/serverless-redis-http を使えば、ローカルのRedisをUpstash互換のHTTP APIで公開できます。
Docker Composeでの設定例
version: '3'
services:
redis:
image: redis
ports:
- '6379:6379'
serverless-redis-http:
image: hiett/serverless-redis-http:latest
ports:
- '8079:80'
environment:
SRH_MODE: env
SRH_TOKEN: example_token
SRH_CONNECTION_STRING: 'redis://redis:6379'
コードの切り替え
import { Redis } from '@upstash/redis';
const redis = new Redis({
url: process.env.NODE_ENV === 'production'
? process.env.UPSTASH_REDIS_REST_URL
: 'http://localhost:8079',
token: process.env.NODE_ENV === 'production'
? process.env.UPSTASH_REDIS_REST_TOKEN
: 'example_token',
});
これで本番はUpstash、ローカルは通常のRedisという構成が実現できます。
Discussion