用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Dev-Toolbelt/dev-team-agents --skill caching命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | caching |
| description | Caching — in-memory, distributed, CDN, invalidation, TTL. |
| Tier | Type | Latency | Scope | Examples |
|---|---|---|---|---|
| L1 | In-memory (process) | <1ms | Single instance | Node.js Map, Python dict, Guava Cache |
| L2 | Distributed | 1–10ms | All instances | Redis, Memcached, Hazelcast |
| L3 | CDN | 5–50ms | Global edge | Cloudflare, Fastly, CloudFront |
| L4 | DB query cache | varies | DB layer | PostgreSQL result cache, MySQL query cache |
Read from L1 first; fall through to L2, then origin. Write invalidation must propagate through all tiers.
Do not cache: user-specific mutable data without scoping by user ID, financial transactions, anything that must be strongly consistent.
| Data Type | Recommended TTL | Rationale |
|---|---|---|
| Real-time feeds | 30s – 2m | Balance freshness vs. load |
| API third-party | 1m – 5m | Respect upstream rate limits |
| Session data | 15m – 1h (sliding) | Security + convenience |
| Computed aggregates | 5m – 30m | Rebuild cost justifies staleness |
| Static reference data | 1h – 24h | Rarely changes |
| CDN / public assets | 1d – 1y + immutable | Content-addressed URLs |
Use event-driven invalidation (not TTL) when data changes are known immediately (e.g., user profile update).
| Pattern | How it works | Best for |
|---|---|---|
| TTL expiry | Entry removed after fixed time | Tolerable staleness |
| Explicit delete-on-write | App deletes cache key on mutation | Strong consistency needs |
| Cache-aside (lazy) | Read miss → load from DB → populate cache | General purpose |
| Write-through | Write to cache and DB atomically | Read-heavy, low write latency tolerance |
| Write-behind (write-back) | Write to cache; async flush to DB | Write-heavy, eventual consistency OK |
| Tag-based invalidation | Keys tagged; invalidate by tag | Content with multiple dependencies |
Cache-aside is the safest default. Write-through and write-behind require careful failure handling.
user:profile:{id}, product:detail:{sku}v2:user:profile:{id}{tenant}:user:profile:{id}When a popular cache entry expires, many requests can hit the origin simultaneously.
SCAN with a cursor — never KEYS in production (blocks the event loop)pipeline()) for bulk reads/writes to reduce round-trip overheadmaxmemory-policy allkeys-lru so Redis evicts least-recently-used keys under memory pressureSETNX, INCR, Lua scripts) over read-modify-write sequences to avoid race conditionsTTL on every key — unbounded keys are a memory leak