返回顶部
c

caching缓存策略

Caching strategies, invalidation, eviction policies, HTTP caching, distributed caching, and anti-patterns. Use when designing cache layers, choosing eviction policies, debugging stale data, or optimizing read-heavy workloads.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
1,025
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

caching

技能名称: 缓存

详细描述:

缓存模式

位置得当的缓存是购买速度最廉价的方式。位置不当的缓存是购买Bug最昂贵的方式。

缓存策略

策略工作原理使用场景
旁路缓存(懒加载)应用检查缓存 → 未命中 → 读取数据库 → 写入缓存默认选择 — 通用场景
穿透读取
缓存未命中时自动从数据库获取 | ORM集成缓存、CDN源站回源 | | 同步写入 | 同步写入缓存和数据库 | 读密集且要求强一致性 | | 异步写入 | 写入缓存,异步刷新到数据库 | 高写入吞吐量,可接受最终一致性 | | 提前刷新 | 缓存过期前主动刷新 | 可预测的访问模式,低延迟关键场景 |

旁路缓存流程:

应用 ──► 缓存 ──► 命中? ──► 返回数据

▼ 未命中
读取数据库 ──► 存入缓存 ──► 返回数据



缓存失效


方法一致性使用场景
基于TTL最终一致性(最多到TTL)简单数据,可接受过时
基于事件
强一致性(近实时) | 库存、个人资料更新 |
| 基于版本 | 强一致性 | 静态资源、API响应、配置 |
| 基于标签 | 强一致性 | CMS内容、基于分类的清除 |

TTL指南

数据类型TTL理由
静态资源(CSS/JS/图片)1年 + 缓存破坏哈希按文件名不可变
API配置/功能开关
30–60秒 | 需要快速传播 | | 用户个人资料数据 | 5–15分钟 | 可容忍过时 | | 产品目录 | 1–5分钟 | 平衡新鲜度与负载 | | 会话数据 | 与会话超时一致 | 安全要求 |

HTTP缓存

Cache-Control指令

指令含义
max-age=N缓存N秒
s-maxage=N
CDN/共享缓存最大年龄(覆盖max-age) | | no-cache | 使用缓存副本前必须重新验证 | | no-store | 任何地方都不缓存 | | must-revalidate | 一旦过期,必须重新验证 | | private | 仅浏览器可缓存,CDN不可 | | public | 任何缓存均可存储 | | immutable | 内容永远不会改变(在max-age内) | | stale-while-revalidate=N | 在获取新内容期间,N秒内可提供过时内容 |

常见配置

不可变静态资源(带哈希文件名)

Cache-Control: public, max-age=31536000, immutable

API响应,CDN缓存,后台刷新

Cache-Control: public, s-maxage=60, stale-while-revalidate=300

个性化数据,仅浏览器

Cache-Control: private, max-age=0, must-revalidate ETag: abc123

永不缓存(认证令牌、敏感数据)

Cache-Control: no-store

条件请求

机制请求头响应头工作原理
ETagIf-None-Match: abcETag: abc基于哈希 — 匹配则返回304
Last-Modified
If-Modified-Since: <日期> | Last-Modified: <日期> | 基于日期 — 未变更则返回304 |

优先使用ETag而非Last-Modified — ETag可检测内容变化,不受时间戳粒度限制。



应用层缓存


方案速度跨进程共享使用场景
内存LRU最快单进程、有限内存、热点数据
Redis
亚毫秒(网络) | 是 | 生产环境默认 — TTL、发布/订阅、持久化 |
| Memcached | 亚毫秒(网络) | 是 | 极大规模下的简单键值对 |
| SQLite | 快(磁盘) | 否 | 嵌入式应用、边缘缓存 |

Redis vs Memcached

特性RedisMemcached
数据结构字符串、哈希、列表、集合、有序集合仅字符串
持久化
AOF、RDB快照 | 无 | | 发布/订阅 | 是 | 否 | | 最大值大小 | 512 MB | 1 MB | | 结论 | 默认选择 | 极大规模下的纯缓存 |

分布式缓存

关注点方案
分区一致性哈希 — 节点变化时最小化重新分配
复制
主从复制 — 写入主节点,从从节点读取 | | 故障转移 | Redis Sentinel或集群自动故障转移 |

经验法则: 生产环境Redis集群至少3主+3从。



缓存淘汰策略


策略工作原理使用场景
LRU淘汰最近最少使用的默认 — 通用场景
LFU
淘汰最不常用的 | 偏态流行度分布 |
| FIFO | 淘汰最旧的条目 | 简单、按时间排序的数据 |
| TTL | 固定时间后淘汰 | 具有已知新鲜度窗口的数据 |

Redis默认是noeviction。生产环境请设置maxmemory-policy为allkeys-lru或volatile-lru。


缓存层级

浏览器缓存 → CDN → 负载均衡器 → 应用缓存 → 数据库缓存 → 数据库

层级缓存内容失效方式
浏览器静态资源、API响应带版本号的URL、Cache-Control
CDN
静态文件、公共API响应 | 清除API、代理键 | | 应用层 | 计算结果、数据库查询、外部API | 事件驱动、TTL | | 数据库 | 查询计划、缓冲池、物化视图 | ANALYZE、手动刷新 |

缓存雪崩预防

当热点键过期时,数百个请求同时命中数据库。

技术工作原理
互斥锁/锁第一个请求加锁、获取、填充;其他请求等待
概率性提前过期
在TTL前有一定概率刷新 |
| 请求合并 | 对同一键的进行中请求去重 |
| 过时-同时-重新验证 | 提供过时内容,异步刷新 |


缓存预热


策略使用场景
部署时预热可预测的键集、延迟敏感
后台任务
报表、仪表盘、目录数据 |
| 影子流量 | 缓存迁移、新基础设施 |
| 基于优先级 | 有限的预热时间预算 |

冷启动影响: 完全刷新缓存可能使数据库负载增加10–100倍。务必逐步预热或使用过时-同时-重新验证。


监控

指标健康范围不健康时的操作
命中率> 90%低 → 缓存太小、TTL错误、键设计不良
淘汰率
接近0稳态 | 高 → 增加内存或调整策略 | | 延迟(p99) | < 1ms(Redis) | 高 → 网络问题、大值、热点键 | | 内存使用率 | < 最大值的80% | 接近最大值 → 扩容或调整淘汰策略 |

绝对禁止

  1. 1. 绝对不要在没有TTL或失效计划的情况下缓存 — 数据会腐烂;每个条目都需要过期路径
  2. 绝对不要把缓存当作持久化存储 — 缓存会淘汰、崩溃和重启;始终回退到数据源
  3. 绝对不要在未加密的情况下缓存敏感数据(令牌、PII) — 缓存泄露会暴露所有明文数据
  4. 绝对不要忽视热点键的缓存雪崩 — 一个过期的热门键可能击垮你的数据库
  5. 绝对不要在生产环境使用无界内存缓存 — 内存会增长直到被OOM杀死
  6. 绝对不要对可变数据使用immutable Cache-Control

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 caching-1776323645 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 caching-1776323645 技能

通过命令行安装

skillhub install caching-1776323645

下载

⬇ 下载 caching v1.0.0(免费)

文件大小: 4.87 KB | 发布时间: 2026-4-17 16:10

v1.0.0 最新 2026-4-17 16:10
Initial release of the caching skill.

- Covers core caching strategies: cache-aside, read-through, write-through, write-behind, refresh-ahead.
- Details cache invalidation methods, TTL guidelines, and HTTP caching best practices.
- Summarizes common application caching solutions: in-memory, Redis, Memcached, SQLite.
- Explains distributed cache concepts, eviction policies, and cache layer design.
- Includes anti-patterns, stampede prevention, cache warming, and monitoring recommendations.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部