redis-js について
redis-js は、開発者や AI アシスタント向けの @upstash/redis SDK ガイドです。データ型、検索、パフォーマンス、設計パターン、移行を扱います。
主な機能
- 01Redis データ構造のガイド
- 02自動シリアライズの例
- 03パイプラインとトランザクションの解説
- 04検索とベクトルインデックスのガイド
- 05パフォーマンスと移行のアドバイス
活用シーン
- 01@upstash/redis によるデータの読み書きの習得
- 02キャッシュ、セッション、レート制限の設計
- 03バッチ処理とキー有効期限の最適化
- 04ioredis または node-redis からの移行
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ upstash/ redis-js --skill redis-jsインストール後、Claude Code で/redis-jsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
advanced-features/auto-pipeline.mdpipeline-and-transactions.mdscripting.mddata-structures/arrays.mdhashes.mdjson.mdlists.mdsets.mdsorted-sets.mdstreams.mdstrings.mdvector-indexes.mdmigrations/from-ioredis.mdfrom-redis-node.mdpatterns/caching.mddistributed-locks.mdleaderboard.mdrate-limiting.mdsession-management.mdperformance/batching-operations.mddata-serialization.mderror-handling.mdpipeline-optimization.mdredis-replicas.mdttl-expiration.mdsearch/adapters.mdsearch/commands/aggregating.mdaliases.mdindex-management.mdquerying.md詳細
Upstash Redis SDK - 完全ガイド
このディレクトリには、@upstash/redis SDK の使用に関する包括的なガイドが含まれています。これらのスキルファイルは、開発者や AI アシスタントが SDK を理解し、効果的に使用できるよう支援するために作成されています。
インストール
npm install @upstash/redis
クイックスタート
基本的な初期化
import { Redis } from "@upstash/redis";
// Initialize with explicit credentials
const redis = new Redis({
url: "UPSTASH_REDIS_REST_URL",
token: "UPSTASH_REDIS_REST_TOKEN",
});
// Or initialize from environment variables
const redis = Redis.fromEnv();
環境変数
.env ファイルに以下を設定します。
UPSTASH_REDIS_REST_URL=https://your-redis.upstash.io
UPSTASH_REDIS_REST_TOKEN=your-token-here
スキルファイルの概要
データ構造(skills/data-structures/)
自動シリアライズの例を含む Redis データ型:
- strings.md - GET、SET、INCR、DECR、APPEND と自動型処理
- hashes.md - HSET、HGET、HMGET とオブジェクトのシリアライズ
- lists.md - LPUSH、RPUSH、LRANGE と配列処理
- sets.md - SADD、SMEMBERS、セット操作
- sorted-sets.md - ZADD、ZRANGE、ZRANK、リーダーボードのパターン
- json.md - JSON.SET、JSON.GET、ネストされたオブジェクトの JSONPath クエリ
- streams.md - XADD、XREAD、XGROUP、コンシューマーグループ
- arrays.md - ARSET、ARINSERT、ARSCAN、ARGREP、AROP、疎なインデックスアドレス指定配列で ARRING を使うリングバッファ
- vector-indexes.md - redis.vector を介した Redis 内での最近傍検索、VECTOR.CREATE、VECTOR.ADD、VECTOR.QUERY
高度な機能(skills/advanced-features/)
複雑な操作と最適化:
- auto-pipeline.md - リクエストの自動バッチ処理、パフォーマンスの最適化
- pipeline-and-transactions.md - 手動パイプライン、MULTI/EXEC、アトミック操作のための WATCH
- scripting.md - サーバーサイドロジックのための Lua スクリプト、EVAL、EVALSHA
パターン(skills/patterns/)
一般的なユースケースとアーキテクチャパターン:
- caching.md - キャッシュアサイド、ライトスルー、TTL 戦略
- rate-limiting.md - @upstash/ratelimit パッケージとの統合
- session-management.md - セッションストレージとユーザー状態管理
- distributed-locks.md - ロックの実装、デッドロックの防止
- leaderboard.md - ソート済みセットのリーダーボード、リアルタイムランキング
パフォーマンス(skills/performance/)
最適化手法とベストプラクティス:
- batching-operations.md - MGET、MSET、バッチ操作
- pipeline-optimization.md - パイプラインを使用するタイミング、パフォーマンスのヒント
- ttl-expiration.md - キーの有効期限戦略、メモリ管理
- data-serialization.md - 自動シリアライズ、カスタムシリアライザー、エッジケースの詳細
- error-handling.md - エラーの種類、再試行戦略、タイムアウト処理、デバッグのヒント
- redis-replicas.md - グローバルデータベースのセットアップ、読み取りレプリカ、書き込み内容の読み取り一貫性
検索(skills/search/)
Redis 向けの全文検索、フィルタリング、集計拡張機能:
- overview.md - スキーマ定義、フィールドの種類、注意点、パッケージ概要
- commands/querying.md - フィルター、ページネーション、ソート、ハイライトを使ったクエリと件数取得
- commands/aggregating.md - メトリクス集計($avg、$sum、$stats)、バケット集計($terms、$range、$histogram、$facet)
- commands/index-management.md - インデックスの作成、説明、削除、waitIndexing
- commands/aliases.md - ダウンタイムなしの再インデックスのためのインデックスエイリアス
- adapters.md - @upstash/search-redis および @upstash/search-ioredis を介して node-redis と ioredis で検索を使用する方法
移行(skills/migrations/)
他のライブラリからの移行ガイド:
- from-ioredis.md - ioredis からの移行、主な相違点、シリアライズの変更
- from-redis-node.md - node-redis からの移行、API の相違点
よくある間違い(LLM が特に陥りやすいもの)
❌ 間違い 1:すべてを文字列として扱う
// ❌ WRONG - Don't do this with @upstash/redis
await redis.set("count", "42"); // Stored as string "42"
const count = await redis.get("count");
const incremented = parseInt(count) + 1; // Manual parsing needed
// ✅ CORRECT - Let the SDK handle it
await redis.set("count", 42); // Stored as number
const count = await redis.get("count");
const incremented = count + 1; // Just use it
❌ 間違い 2:JSON を手動でシリアライズする
// ❌ WRONG - Unnecessary with @upstash/redis
await redis.set("user", JSON.stringify({ name: "Alice" }));
const user = JSON.parse(await redis.get("user"));
// ✅ CORRECT - Automatic handling
await redis.set("user", { name: "Alice" });
const user = await redis.get("user");
コマンドのクイックリファレンス
// Strings
await redis.set("key", "value");
await redis.get("key");
await redis.incr("counter");
await redis.decr("counter");
// Hashes
await redis.hset("user:1", { name: "Alice", age: 30 });
await redis.hget("user:1", "name");
await redis.hgetall("user:1");
// Lists
await redis.lpush("tasks", "task1", "task2");
await redis.rpush("tasks", "task3");
await redis.lrange("tasks", 0, -1);
// Sets
await redis.sadd("tags", "javascript", "redis");
await redis.smembers("tags");
// Sorted Sets
await redis.zadd("leaderboard", { score: 100, member: "player1" });
await redis.zrange("leaderboard", 0, -1);
// JSON
await redis.json.set("user:1", "$", { name: "Alice", address: { city: "NYC" } });
await redis.json.get("user:1");
// Expiration
await redis.setex("session", 3600, { userId: "123" });
await redis.expire("key", 60);
await redis.ttl("key");
ベストプラクティス
- 認証情報には環境変数を使用し、ハードコードしないでください
- 自動シリアライズを活用し、JavaScript のネイティブ型を渡してください
- 型安全性を高めるためにTypeScript の型を使用してください
- メモリを管理するために適切な TTL を設定してください
- 複数の操作にはパイプラインを使用してください
- キーに名前空間を設定してください(例:
user:123、session:abc)
リソース
ヘルプ
特定のトピックについて詳しくは、skills/ ディレクトリにある各スキルファイルを参照してください。各ファイルには、そのトピックに関する包括的なサンプル、ユースケース、ベストプラクティスが記載されています。
コメント
Markdown 対応