360 Secure SkillHub
360 安全技能中心

Redis Store

该 Skill 以 Markdown 指令形式整理 Redis 使用要点,涵盖缓存键过期与内存泄漏、常用数据结构、原子性陷阱、Pub/Sub 局限、RDB/AOF 持久化、maxmemory 与淘汰策略、集群哈希槽与连接管理及常见错误。文档声明支持 Windows/macOS/Linux 上的多种 Agent,无需额外 API Key。

thcjp
thcjp
热度 45.00
最近更新 2026-09-22 03:00:26
分类:开发依赖:读写文件 / 代码执行 / 内部调用大模型应用场景:DevOps / 概念解释

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add thcjp/redis-store
Metadata
slug
redis-store
name
redis-store
version
1.0.0
displayName
Redis
summary
Use Redis effectively for caching, queues, and data structures with proper expiration and persist...
license
MIT
description
Use Redis effectively for caching, queues, and data structures with proper expiration and persist... 核心能力: - 智能代理领域的专业化AI辅助工具 - 基于高人气开源Skill深度优化升级 - 移除风险代码,增强安全性和稳定性 适用场景: - AI代理增强、记忆管理、自主决策 - 独立开发者与一人公司效率提升 - 自动化工作流与智能决策辅助 差异化:经过深度优化,去除原始风险代码,清理外部依赖引用,增强元数据和触发关键词,完全适配SkillHub平台规范。 触发关键词: redis, caching, queues, data, store, effectively
tags
["Agents"]
tools
["read","exec"]

Redis

Expiration (Memory Leaks)

  • Keys without TTL live forever—set expiry on every cache key: SET key value EX 3600
  • Can't add TTL after SET without another command—use SETEX or SET ... EX
  • EXPIRE resets on key update by default—SET removes TTL; use SET ... KEEPTTL (Redis 6+)
  • Lazy expiration: expired keys removed on access—may consume memory until touched
  • SCAN with large database: expired keys still show until cleanup cycle runs

Data Structures I Underuse

  • Sorted sets for rate limiting: ZADD limits:{user} {now} {request_id} + ZREMRANGEBYSCORE for sliding window
  • HyperLogLog for unique counts: PFADD visitors {ip} uses 12KB for billions of uniques
  • Streams for queues: XADD, XREAD, XACK—better than LIST for reliable queues
  • Hashes for objects: HSET user:1 name "Alice" email "a@b.com"—more memory efficient than JSON string

Atomicity Traps

  • GET then SET is not atomic—another client can modify between; use INCR, SETNX, or Lua
  • SETNX for locks: SET lock:resource {token} NX EX 30—NX = only if not exists
  • WATCH/MULTI/EXEC for optimistic locking—transaction aborts if watched key changed
  • Lua scripts are atomic—use for complex operations: EVAL "script" keys args

Pub/Sub Limitations

  • Messages not persisted—subscribers miss messages sent while disconnected
  • At-most-once delivery—no acknowledgment, no retry
  • Use Streams for reliable messaging—XREAD BLOCK + XACK pattern
  • Pub/Sub across cluster: message goes to all nodes—works but adds overhead

Persistence Configuration

  • RDB (snapshots): fast recovery, but data loss between snapshots—default every 5min
  • AOF (append log): less data loss, slower recovery—appendfsync everysec is good balance
  • Both off = pure cache—acceptable if data can be regenerated
  • BGSAVE for manual snapshot—doesn't block but forks process, needs memory headroom

Memory Management (Critical)

  • maxmemory must be set—without it, Redis uses all RAM, then swap = disaster
  • Eviction policies: allkeys-lru for cache, volatile-lru for mixed, noeviction for persistent data
  • INFO memory shows usage—monitor used_memory vs maxmemory
  • Large keys hurt eviction—one 1GB key evicts poorly; prefer many small keys

Clustering

  • Hash slots: keys distributed by hash—same slot required for multi-key operations
  • Hash tags: {user:1}:profile and {user:1}:sessions go to same slot—use for related keys
  • No cross-slot MGET/MSET—error unless all keys in same slot
  • MOVED redirect: client must follow—use cluster-aware client library

Common Patterns

  • Cache-aside: check Redis, miss → fetch DB → write Redis—standard caching
  • Write-through: write DB + Redis together—keeps cache fresh
  • Rate limiter: INCR requests:{ip}:{minute} with EXPIRE—simple fixed window
  • Distributed lock: SET ... NX EX + unique token—verify token on release

Connection Management

  • Connection pooling: reuse connections—creating is expensive
  • Pipeline commands: send batch without waiting—reduces round trips
  • QUIT on shutdown—graceful disconnect
  • Sentinel or Cluster for HA—single Redis is SPOF

Common Mistakes

  • No TTL on cache keys—memory grows until OOM
  • Using as primary database without persistence—data loss on restart
  • Blocking operations in single-threaded Redis—KEYS * blocks everything; use SCAN
  • Storing large blobs—Redis is RAM; 100MB values are expensive
  • Ignoring maxmemory—production Redis without limit will crash host

依赖说明

运行环境

  • Agent平台: 支持SKILL.md的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
  • 操作系统: Windows / macOS / Linux

第三方依赖

依赖项 类型 是否必需 获取方式
LLM API API 必需 由Agent内置LLM提供

API Key 配置

  • 本Skill基于Markdown指令,无需额外API Key(除内容中明确标注的外部API)

可用性分类

  • 分类: MD+EXEC(纯Markdown指令,部分功能需要exec命令行执行能力)
  • 说明: 基于Markdown的AI Skill,通过自然语言指令驱动Agent执行任务