jpskill.com
💼 ビジネス コミュニティ

redis

Redis mastery for caching, data structures, pub/sub, and CLI operations. Use when user asks to "set up Redis", "cache data", "redis commands", "pub/sub", "redis data types", "session store", "rate limiting with Redis", or any Redis tasks.

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-17
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

[Skill 名] redis

Redis

キャッシング、データ構造、リアルタイムパターン。

CLI の基本

# 接続
redis-cli
redis-cli -h hostname -p 6379 -a password

# Ping
redis-cli ping  # PONG

# 情報
redis-cli info
redis-cli info memory
redis-cli info keyspace

文字列

# 設定/取得
SET key "value"
GET key

# 有効期限付き
SET session:abc "user123" EX 3600      # 1時間
SETEX session:abc 3600 "user123"       # 同じこと

# 存在しない場合のみ設定
SETNX lock:resource "owner123"

# インクリメント/デクリメント
INCR counter
INCRBY counter 5
DECR counter

# 複数
MSET key1 "val1" key2 "val2"
MGET key1 key2

ハッシュ

# フィールドの設定
HSET user:1 name "Alice" email "alice@test.com" age 30

# 取得
HGET user:1 name
HGETALL user:1
HMGET user:1 name email

# フィールドのインクリメント
HINCRBY user:1 age 1

# 存在チェック
HEXISTS user:1 email

# フィールドの削除
HDEL user:1 age

リスト

# プッシュ
LPUSH queue "task1"       # 左 (先頭)
RPUSH queue "task2"       # 右 (末尾)

# ポップ
LPOP queue                # 左
RPOP queue                # 右
BLPOP queue 30            # ブロッキングポップ (タイムアウト30秒)

# 範囲
LRANGE queue 0 -1         # 全ての要素
LRANGE queue 0 9          # 最初の10個

# 長さ
LLEN queue

# トリム (範囲内のみ保持)
LTRIM queue 0 99          # 最初の100個を保持

セット

# 追加/削除
SADD tags "python" "redis" "docker"
SREM tags "docker"

# メンバーシップの確認
SISMEMBER tags "python"

# 全てのメンバー
SMEMBERS tags

# カウント
SCARD tags

# 操作
SUNION tags1 tags2        # 和集合
SINTER tags1 tags2        # 共通集合
SDIFF tags1 tags2         # 差集合

# ランダム
SRANDMEMBER tags 2        # ランダムな2つのメンバー

ソート済みセット

# スコア付きで追加
ZADD leaderboard 100 "alice" 95 "bob" 87 "charlie"

# ランクで取得
ZRANGE leaderboard 0 -1 WITHSCORES     # 昇順
ZREVRANGE leaderboard 0 2 WITHSCORES   # 上位3名

# スコアで取得
ZRANGEBYSCORE leaderboard 90 100       # スコア90-100

# ランク
ZRANK leaderboard "alice"              # 0ベースの順位
ZREVRANK leaderboard "alice"           # 逆順のランク

# スコアのインクリメント
ZINCRBY leaderboard 5 "bob"

# 範囲内のカウント
ZCOUNT leaderboard 80 100

キー管理

# キーの検索
KEYS user:*               # パターンマッチ (本番環境では避ける)
SCAN 0 MATCH user:* COUNT 100   # 安全なイテレーション

# 有効期限
EXPIRE key 3600           # TTL (秒) を設定
PEXPIRE key 3600000       # ミリ秒
TTL key                   # TTL を確認
PERSIST key               # 有効期限を削除

# 削除
DEL key
UNLINK key                # 非同期削除 (大きなキーの場合)

# タイプ
TYPE key

# 存在
EXISTS key

Pub/Sub

# 購読
SUBSCRIBE channel1 channel2

# パターン購読
PSUBSCRIBE news.*

# 発行
PUBLISH channel1 "Hello subscribers!"

# 購読解除
UNSUBSCRIBE channel1

一般的なパターン

キャッシング

# キャッシュアサイドパターン
# 1. キャッシュを確認
GET cache:user:1
# 2. ミスの場合はDBをクエリし、キャッシュを設定
SET cache:user:1 '{"name":"Alice"}' EX 300   # 5分間のTTL

レート制限

# スライディングウィンドウレート制限
# タイムスタンプスコアを持つソート済みセットを使用
ZADD ratelimit:user:1 <timestamp> <request-id>
ZREMRANGEBYSCORE ratelimit:user:1 0 <timestamp-window-ago>
ZCARD ratelimit:user:1
# カウントが制限を超えた場合、拒否

セッションストア

SET session:<session-id> '{"userId":1,"role":"admin"}' EX 86400
GET session:<session-id>

分散ロック

# ロックの取得
SET lock:resource <unique-id> NX EX 30
# NX = 存在しない場合のみ、EX = 自動有効期限

# ロックの解放 (アトミック性のためにLuaを使用)
EVAL "if redis.call('GET',KEYS[1]) == ARGV[1] then return redis.call('DEL',KEYS[1]) else return 0 end" 1 lock:resource <unique-id>

設定

# 最大メモリ
CONFIG SET maxmemory 256mb
CONFIG SET maxmemory-policy allkeys-lru

# エビクションポリシー:
# noeviction     - 満杯時に書き込みでエラーを返す
# allkeys-lru    - 最も最近使用されていないキーを削除
# allkeys-lfu    - 最も頻繁に使用されていないキーを削除
# volatile-lru   - TTLを持つキーの中でLRU
# volatile-ttl   - 最も短いTTLを持つキーを最初に削除

# 永続化
CONFIG SET save "900 1 300 10"   # RDBスナップショット
CONFIG SET appendonly yes        # AOFログ

# 設定の表示
CONFIG GET maxmemory*

参照

キャッシングパターン、Pub/Sub、Luaスクリプトについては、references/patterns.md を参照してください。

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Redis

Caching, data structures, and real-time patterns.

CLI Basics

# Connect
redis-cli
redis-cli -h hostname -p 6379 -a password

# Ping
redis-cli ping  # PONG

# Info
redis-cli info
redis-cli info memory
redis-cli info keyspace

Strings

# Set/get
SET key "value"
GET key

# With expiration
SET session:abc "user123" EX 3600      # 1 hour
SETEX session:abc 3600 "user123"       # Same thing

# Set if not exists
SETNX lock:resource "owner123"

# Increment/decrement
INCR counter
INCRBY counter 5
DECR counter

# Multiple
MSET key1 "val1" key2 "val2"
MGET key1 key2

Hashes

# Set fields
HSET user:1 name "Alice" email "alice@test.com" age 30

# Get
HGET user:1 name
HGETALL user:1
HMGET user:1 name email

# Increment field
HINCRBY user:1 age 1

# Check existence
HEXISTS user:1 email

# Delete field
HDEL user:1 age

Lists

# Push
LPUSH queue "task1"       # Left (head)
RPUSH queue "task2"       # Right (tail)

# Pop
LPOP queue                # Left
RPOP queue                # Right
BLPOP queue 30            # Blocking pop (timeout 30s)

# Range
LRANGE queue 0 -1         # All elements
LRANGE queue 0 9          # First 10

# Length
LLEN queue

# Trim (keep only range)
LTRIM queue 0 99          # Keep first 100

Sets

# Add/remove
SADD tags "python" "redis" "docker"
SREM tags "docker"

# Check membership
SISMEMBER tags "python"

# All members
SMEMBERS tags

# Count
SCARD tags

# Operations
SUNION tags1 tags2        # Union
SINTER tags1 tags2        # Intersection
SDIFF tags1 tags2         # Difference

# Random
SRANDMEMBER tags 2        # 2 random members

Sorted Sets

# Add with score
ZADD leaderboard 100 "alice" 95 "bob" 87 "charlie"

# Get by rank
ZRANGE leaderboard 0 -1 WITHSCORES     # Ascending
ZREVRANGE leaderboard 0 2 WITHSCORES   # Top 3

# Get by score
ZRANGEBYSCORE leaderboard 90 100       # Score 90-100

# Rank
ZRANK leaderboard "alice"              # 0-based position
ZREVRANK leaderboard "alice"           # Reverse rank

# Increment score
ZINCRBY leaderboard 5 "bob"

# Count in range
ZCOUNT leaderboard 80 100

Key Management

# Find keys
KEYS user:*               # Pattern match (avoid in production)
SCAN 0 MATCH user:* COUNT 100   # Safe iteration

# Expiration
EXPIRE key 3600           # Set TTL (seconds)
PEXPIRE key 3600000       # Milliseconds
TTL key                   # Check TTL
PERSIST key               # Remove expiration

# Delete
DEL key
UNLINK key                # Async delete (large keys)

# Type
TYPE key

# Exists
EXISTS key

Pub/Sub

# Subscribe
SUBSCRIBE channel1 channel2

# Pattern subscribe
PSUBSCRIBE news.*

# Publish
PUBLISH channel1 "Hello subscribers!"

# Unsubscribe
UNSUBSCRIBE channel1

Common Patterns

Caching

# Cache-aside pattern
# 1. Check cache
GET cache:user:1
# 2. If miss, query DB, then set cache
SET cache:user:1 '{"name":"Alice"}' EX 300   # 5 min TTL

Rate Limiting

# Sliding window rate limit
# Using sorted set with timestamp scores
ZADD ratelimit:user:1 <timestamp> <request-id>
ZREMRANGEBYSCORE ratelimit:user:1 0 <timestamp-window-ago>
ZCARD ratelimit:user:1
# If count > limit, reject

Session Store

SET session:<session-id> '{"userId":1,"role":"admin"}' EX 86400
GET session:<session-id>

Distributed Lock

# Acquire lock
SET lock:resource <unique-id> NX EX 30
# NX = only if not exists, EX = auto-expire

# Release lock (use Lua for atomicity)
EVAL "if redis.call('GET',KEYS[1]) == ARGV[1] then return redis.call('DEL',KEYS[1]) else return 0 end" 1 lock:resource <unique-id>

Configuration

# Max memory
CONFIG SET maxmemory 256mb
CONFIG SET maxmemory-policy allkeys-lru

# Eviction policies:
# noeviction     - Return error on write when full
# allkeys-lru    - Evict least recently used
# allkeys-lfu    - Evict least frequently used
# volatile-lru   - LRU among keys with TTL
# volatile-ttl   - Evict shortest TTL first

# Persistence
CONFIG SET save "900 1 300 10"   # RDB snapshots
CONFIG SET appendonly yes        # AOF log

# View config
CONFIG GET maxmemory*

Reference

For caching patterns, pub/sub, and Lua scripts: references/patterns.md