記事一覧
(更新: 2022/9/24)

upstash Redisを個人ブログに取り入れて爆速風にしてみた

#Redis #Serverless #Blog #Programming

やったこと

このブログ(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してポチポチしたら使えてしまうので非常に便利ですね。業務上で使えそうであれば使ってみます。(多分個人開発がほとんどだけど)

Redis入門 インメモリKVSによる高速データ管理

追記 2022/09/24

このNextjsブログを1日中ビルドしてるとさすがに夜には限界が来ました。

1人の使用量でこれなのでチーム開発には有料で開発したほうが良さそうです。

参考サイト

Compare | Upstash: Documentation

Use Cases | Upstash: Documentation

無料で使えるデータベースUpstashをご存知、ないのですか!?