💼 ビジネス コミュニティ
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. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
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