name: redis-skill description: Redis 快取和資料結構管理技能。通過自然語言操作 Redis,支援 String、Hash、List、Set、ZSet、Stream 等資料結構操作。當用戶提到 Redis、快取、訊息佇列、會話儲存時使用此技能。
通過自然語言,輕鬆操作 Redis,利用其豐富資料結構!
安裝 redis-cli:
Ubuntu/Debian:
sudo apt update
sudo apt install redis-tools
macOS:
brew install redis
Python 客戶端(高階操作):
pip install redis
使用 redis-cli:
redis-cli -h localhost -p 6379
使用環境變數:
export REDIS_HOST=localhost
export REDIS_PORT=6379
export REDIS_PASSWORD=your_password
# 設定快取,過期時間 3600 秒
SET user:123 "{'name': 'Alice', 'email': 'alice@example.com'}" EX 3600
# 獲取快取
GET user:123
# 批次獲取
MGET user:123 user:456 user:789
# 原子遞增(計數器)
INCR page_views
INCRBY download_counter 100
# 不存在才設定(分散式鎖)
SETNX lock:task_123 1
# 儲存物件
HSET user:123 name Alice email alice@example.com age 28
# 獲取單個欄位
HGET user:123 name
# 獲取所有欄位
HGETALL user:123
# 批次獲取
HMGET user:123 name email age
# 刪除欄位
HDEL user:123 age
# 檢查欄位是否存在
HEXISTS user:123 email
#獲取所有欄位名
HKEYS user:123
# 獲取所有值
HVALS user:123
# 左側插入(佇列頭部)
LPUSH queue:task "task_data_1"
# 右側插入(佇列尾部)
RPUSH queue:task "task_data_2"
# 左側彈出(佇列消費)
LPOP queue:task
# 右側彈出(棧彈出)
RPOP queue:task
# 範圍查詢(分頁)
LRANGE queue:task 0 9
# 列表長度
LLEN queue:task
# 阻塞彈出(生產者-消費者)
BLPOP queue:task 30
# 新增成員
SADD users:online user_123 user_456 user_789
# 檢查成員是否存在
SISMEMBER users:online user_123
# 獲取所有成員
SMEMBERS users:online
# 集合大小
SCARD users:online
# 隨機獲取 N 個成員
SRANDMEMBER users:online 3
# 交集(共同線上的群成員)
SINTER group1:members group2:members
# 並集(所有群成員)
SUNION group1:members group2:members
# 差集(在一個集合但不在另一個)
SDIFF group1:members group2:members
# 將結果儲存到新集合
SINTERSTORE common_members group1:members group2:members
訪問小蔥技能站7w4.net,解鎖更多實用的AI技能外掛。
# 新增成員及分數
ZADD leaderboard 1500 player_123 2000 player_456 1800 player_789
# 更新分數
ZINCRBY leaderboard 100 player_123
# 查詢排名(倒序)
ZREVRANGE leaderboard 0 9
# 查詢排名(正序)
ZRANGE leaderboard 0 9
# 查詢成員分數
ZSCORE leaderboard player_123
# 查詢成員排名
ZREVRANK leaderboard player_123
# 按分數範圍查詢
ZRANGEBYSCORE leaderboard 1500 2000
# 按分數範圍刪除
ZREMRANGEBYSCORE leaderboard 0 1000
# 集合大小
ZCARD leaderboard
# 新增訊息
XADD logs "*" timestamp 1700000000 level "INFO" message "User login"
# 消費訊息
XREAD STREAMS logs 0
# 建立消費者組
XGROUP CREATE logs consumers_group 0
# 消費者讀取訊息
XREADGROUP GROUP consumers_group consumer_1 STREAMS logs >
# 確認訊息處理完成
XACK logs consumers_group message_id
# 獲取鎖(SETNX + 過期時間)
SET lock:resource_123 "unique_id" NX EX 30
# 檢查鎖是否屬於自己
GET lock:resource_123
# 釋放鎖(Lua 指令碼保證原子性)
EVAL "
if redis.call('get', KEYS[1]) == ARGV[1] then
return redis.call('del', KEYS[1])
else
return 0
end
" 1 lock:resource_123 "unique_id"
# 配置慢查詢閾值(毫秒)
CONFIG SET slowlog-log-slower-than 10000
# 檢視慢查詢
SLOWLOG GET 10
# 清空慢查詢日誌
SLOWLOG RESET
# 檢視記憶體使用情況
INFO memory
# 檢視鍵的記憶體佔用
MEMORY USAGE user:123
# 查詢大鍵
SCAN 0 MATCH * COUNT 100
# 使用 Pipeline 減少網路往返
EVAL "
local results = {}
for i = 1, #KEYS do
table.insert(results, redis.call('GET', KEYS[i]))
end
return results
" 3 key1 key2 key3
import redis
pool = redis.ConnectionPool(
host='localhost',
port=6379,
max_connections=50,
socket_timeout=5
)
client = redis.Redis(connection_pool=pool)
使用者: "快取使用者資訊,過期時間 1 小時"
AI: "正在設定快取..."
SET user:123 '{"id": 123, "name": "Alice", "email": "alice@example.com"}' EX 3600
使用者: "更新玩家得分 1500,然後查詢前 10 名"
AI: "更新分數並查詢排行榜"
ZADD leaderboard 1500 player_123
ZREVRANGE leaderboard 0 9 WITHSCORES
使用者: "獲取任務 456 的分散式鎖,防止重複執行"
AI: "嘗試獲取分散式鎖(30秒過期)"
SET lock:task_456 "unique_id_$(date +%s%N)" NX EX 30
開始使用: 告訴我你的 Redis 操作需求,我會幫你生成相應的命令!🚀
這是一個 Redis 操作指南,內容全面、示例豐富、質量不錯。覆蓋了各種資料結構的命令和使用場景,配有中文說明和示例對話。但它本質上是一份文件,不能直接幫你執行 Redis 操作,需要配合其他工具使用。