render-keyvalue について
Valkey 8 を基盤とし、Redis クライアントと互換性のある Render Key Value の設定スキルです。接続 URL、メモリポリシー、Blueprint のアクセス制御、永続化を説明します。
主な機能
- 01Redis クライアント互換の Valkey 8
- 02内部・外部接続 URL
- 03キャッシュとキュー向けメモリポリシー
- 04Blueprint のアクセス制御設定
- 05データ永続化の案内
活用シーン
- 01共有アプリケーションキャッシュの追加
- 02ユーザーセッションの保存
- 03バックグラウンドジョブキューの設定
- 04接続や認証エラーの調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ render-oss/ skills --skill render-keyvalueインストール後、Claude Code で/render-keyvalueを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/compute-plans.mdconnection-examples.mdprivate-networking.mdtroubleshooting.md詳細
Render Key Value
Render Key Value は、Valkey 8 を実行する、低レイテンシで Redis 互換のインメモリストレージを提供します。共有キャッシュ、セッションストア、ジョブキューのバックエンドとして使用できます。ほぼすべての Redis クライアントライブラリと互換性があります。
使用する場面
- Web アプリにキャッシュやセッションストアを追加する場合
- Celery、Sidekiq、BullMQ、Asynq、Oban 用のジョブキューバックエンドを接続する場合
- 適切なmaxmemory ポリシー(キャッシュ用とキュー用)を選ぶ場合
- Blueprint で
ipAllowList(必須フィールド)を設定する場合 - 内部 URL と外部 URL のどちらを使って接続するかを判断する場合
- 認証の失敗や接続拒否エラーをトラブルシューティングする場合
バックグラウンドワーカーの設定とキューフレームワークのパターンについては、render-background-workers を参照してください。Blueprint の作成については、render-blueprints を参照してください。
内部 Key Value 接続を設定またはトラブルシューティングする前に、references/private-networking.md をお読みください。
主要な概念
Valkey 8(Redis ではありません)
新しいインスタンスでは、オープンソースの Redis フォークである Valkey 8 が実行されます。Redis のドロップイン置換として利用でき、既存の Redis クライアントライブラリを変更せずに使用できます。レガシーインスタンス(2025 年 2 月より前に作成されたもの)では Redis 6 が実行されます。
接続 URL
各インスタンスには 2 つの URL があります。
| URL の種類 | 使用する場面 | 認証が必要 |
|---|---|---|
内部(redis://red-xxx:6379) | 同じワークスペースとリージョンにある Render サービスから接続する場合 | いいえ(デフォルト) |
外部(rediss://red-xxx:6379) | Render の外部(ローカル開発、CI)から接続する場合 | 常に必要 |
本番サービスでは常に内部 URL を優先してください。レイテンシが低く、TLS のオーバーヘッドがなく、プライベートネットワーク経由で通信できます。
外部接続はデフォルトで無効です。ダッシュボードのアクセス制御リストに IP 範囲を追加すると有効になります。
内部認証
デフォルトでは、内部接続に認証は必要ありません。コンプライアンス対応やセキュリティ強化のために、ダッシュボードで内部接続に認証を必須にできます。この設定により、内部 URL に認証情報が含まれるようになります。
redis://default:PASSWORD@red-xxx:6379
警告: 内部認証を有効にすると、既存の認証なしの接続が機能しなくなります。先にクライアントを認証付き URL に移行してください。
Maxmemory ポリシー
重要な決定事項です。 ユースケースに応じて選択してください。
| ユースケース | ポリシー | 理由 |
|---|---|---|
| キャッシュ(データを失ってもよい) | allkeys-lru | 使用頻度が最も低いキーを削除して空き領域を確保します |
| ジョブキュー(データを失えない) | noeviction | メモリがいっぱいの場合、書き込み時にエラーを返します。キーは削除されません |
| セッションストア | allkeys-lru または volatile-lru | セッションは再生成できるため、LRU は安全です |
利用できるすべてのポリシー:
| ポリシー | 動作 | メモリがいっぱいになるか |
|---|---|---|
allkeys-lru | LRU に基づいて任意のキーを削除します | いいえ |
noeviction | メモリがいっぱいの場合、書き込み時にエラーを返します | はい |
volatile-lru | LRU に基づいて TTL 付きキーを削除します | はい |
volatile-lfu | LFU に基づいて TTL 付きキーを削除します | はい |
allkeys-lfu | LFU に基づいて任意のキーを削除します | いいえ |
volatile-random | TTL 付きキーをランダムに削除します | はい |
allkeys-random | 任意のキーをランダムに削除します | いいえ |
volatile-ttl | 有効期限が最も近いキーを削除します | はい |
Blueprint の設定
services:
- type: keyvalue
name: cache
plan: starter
region: oregon
maxmemoryPolicy: allkeys-lru
ipAllowList: []
ipAllowList は必須です
Blueprint では、Key Value サービスに ipAllowList を必ず含める必要があります。一般的な設定パターン:
| 値 | 意味 |
|---|---|
[] | 外部アクセスなし(内部のみ。ほとんどのアプリに推奨) |
[{source: "0.0.0.0/0", description: "everywhere"}] | 外部アクセスを開放(必要な場合に限って使用) |
[{source: "203.0.113.0/24", description: "office"}] | 特定の IP 範囲 |
サービスへの接続
type: keyvalue と property: connectionString を指定した fromService を使用します。
envVars:
- key: REDIS_URL
fromService:
name: cache
type: keyvalue
property: connectionString
Key Value で利用できる fromService プロパティ:
| プロパティ | 値 |
|---|---|
connectionString | 内部 URL 全体(redis://red-xxx:6379) |
host | ホスト名のみ |
port | ポートのみ(通常は 6379) |
データの永続化
- 有料インスタンス: ディスクに書き込まれ、
appendfsync everysecが設定されています。中断時に、最大1秒分の書き込みが失われる可能性があります。 - 無料インスタンス: ディスクへの永続化はありません。再起動またはアップグレード時にデータが失われます。
- 無料プランからのアップグレード: 無料インスタンスにはディスクがないため、アップグレード時にすべてのデータが失われます。
コンピュートプランと変更
コンピュートプランによって、利用可能なメモリと接続数の上限が決まります。現在のプラン ID と Key Value 固有の変更に関するガイダンスについては、references/compute-plans.md を参照してください。
接続例
Node.js(ioredis、node-redis)、Python(redis-py)、Ruby(redis-rb、Sidekiq)、Go のクライアントコードについては、references/connection-examples.md を参照してください。
よくある間違い
| 間違い | 修正方法 |
|---|---|
Blueprint に ipAllowList がない | 内部アクセスのみにするには ipAllowList: [] を追加します |
ジョブキューに allkeys-lru を使用する | noeviction に切り替えます。LRU によるエビクションでは、キューに入っているジョブが削除されます |
| Render サービスから外部 URL で接続する | レイテンシを抑え、認証を不要にするには内部 URL を使用します |
fromService に type: keyvalue を指定し忘れる | type は必須です。指定しないと接続設定に失敗します |
非推奨の redis 型エイリアスを使用する | 新しい Blueprint では keyvalue を推奨します(redis も引き続き動作しますが、非推奨です) |
参考資料
| ドキュメント | 内容 |
|---|---|
references/compute-plans.md | 現在のプラン ID、仕様、利用可能状況、Key Value プランの変更 |
references/private-networking.md | 現在のプライベートネットワークの範囲、内部アドレス指定、分離、トラブルシューティング |
references/connection-examples.md | Node.js、Python、Ruby、Go のクライアントコード |
references/troubleshooting.md | 認証エラー、接続拒否、メモリ不足、Redis 6 からの移行 |
関連スキル
- render-background-workers — Celery、Sidekiq、BullMQ を使ったキューコンシューマーのセットアップ
- render-blueprints —
render.yamlの完全なスキーマ、fromServiceのパターン - render-networking — プライベートネットワーク、内部 URL
- render-env-vars —
REDIS_URLおよびその他の接続変数の接続設定
現在のドキュメントの取得
このスキルで Render の最新ドキュメントを参照するよう指示された場合は、必ず次の手順に従ってください。
- 利用可能な URL 取得ツールまたは
curlなどの HTTP クライアントを使って、リンク先の Markdown ドキュメントを直接取得します。ウェブ検索の要約でドキュメントを代用しないでください。 - 取得に成功し、想定したドキュメントが返されたことを確認してから、内容を読みます。ファイルを保存したり、そのパスを表示したりするだけでは不十分です。
- リクエストに失敗した場合、またはツールで Markdown のレスポンスを読み取れない場合は、リンク先の HTML 版を開いて読みます。
- どちらの形式も取得できない場合は、最新の参照資料を利用できないことを明示し、スキルにトピック固有の代替手順があればそれに従います。安定した制約についてのみ同梱のガイダンスを使用し、変更される可能性のあるプラットフォームの詳細を推測しないでください。
複数の参照資料が必要な場合は、それぞれにこの手順を適用し、確認できたドキュメントと利用できないままのドキュメントを区別してください。