upstash Redisを個人ブログに取り入れて爆速風にしてみた
やったこと
このブログ(Nextjs)はビルド時に画像を毎回notionから取得していたのですが、その画像をRedisサーバに置いて爆速になるようにしています。(正確にはLQIPをしてるので早く見えるようになっています。)
Upstash: Serverless Data for Redis® and Kafka®
upstashは何が良いのか
まず個人開発者にとっては無料で使えるところです。
10,000コマンドまで無料でそれ以上は有料の線引みたいです。

もちろん render.com でも良いのですが、VercelのIntegrationに出てきたので今回使ってみました。
AWS ElasticCacheと比較する
-
サーバレスの価格モデルはなく、インスタンス料金を支払わなければいけない
-
REST APIがない。upstashではREST APIが組み込まれている
-
ElasticCacheはVPC内からアクセスされるように設計されている。upstashならどこからでもアクセス可能
Redis labと比較する
-
サーバレスの価格モデルはなく、インスタンス料金を支払わなければいけない
-
REST APIがない。upstashではREST APIが組み込まれている
DynamoDBと比較する
- DynamoDB はディスクベースのデータストレージです。書き込みと読み取りの両方のレイテンシーは、Redis よりもはるかに高くなります。
- ベンチマークでの比較

-
DynamoDBは価格設定が複雑すぎる&グローバルテーブルなど複雑になりがち
-
DynamoDBはAWSでしか使えない。ベンダーロックインしてしまう。
-
RedisはOSS製品であるため気軽にローカルで実行できる
upstash/redisの使い方
普通のRedisとそこまで変わりません。VercelであればGUI上で進めていくと自動的に入ります。

node.jsの場合は @keyvhq/redisで初期化するだけOKです。
const keyvRedis = new KeyvRedis(process.env.REDIS_URL)
const redis = new Keyv({ store: keyvRedis, namespace: 'NAMESPACE' })
redis.set('key', 'value')
redis.get('key') // value
以前はAWS ElasticCacheを使っていたけれど乗り換えたいという場合でも移行コストはそれほど高くなさそうで良いですね。
終わりに
正直最初はrenderを使用するか考えていましたが、VercelでついでにIntegrationしてポチポチしたら使えてしまうので非常に便利ですね。業務上で使えそうであれば使ってみます。(多分個人開発がほとんどだけど)
追記 2022/09/24
このNextjsブログを1日中ビルドしてるとさすがに夜には限界が来ました。
1人の使用量でこれなのでチーム開発には有料で開発したほうが良さそうです。

参考サイト
Compare | Upstash: Documentation