底层缓存 API 与失效处理
缓存查询结果并清除过期键
底层缓存 API 与失效处理 是 CoddyKit 上的免费 Django Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Django Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Django Academy 课程共包含 4 节课。
随心缓存任何内容
低级缓存 API可以存储任何 Python 对象,例如查询结果,并让您完全控制缓存键和超时时间。
导入 cache 对象
从 django.core.cache 中使用共享的 cache 对象,即可在视图或服务的任何位置调用它的方法。
from django.core.cache import cache旁路缓存模式
经典流程是旁路缓存:先尝试读取缓存,只有在找不到值时才执行速度较慢的查询。
stats = cache.get("stats")
if stats is None:
stats = compute_stats()
cache.set("stats", stats, 300)一次调用 get_or_set
使用 get_or_set 可以简化这一模式:它会返回缓存值,或者计算、存储并返回该值。
stats = cache.get_or_set("stats", compute_stats, 300)一次存储多个值
使用 set_many 在一次往返中写入多个键,这比多次单独调用 set 更快。
cache.set_many({"a": 1, "b": 2}, 300)过时数据是风险所在
缓存值可能会与数据库中的数据不一致。移除过时条目以便加载新数据,这称为缓存失效。
删除一个键
使用键调用 delete 可以删除一个条目,强制下一次读取时从源数据重新构建它。
cache.delete("stats")保存时使缓存失效
一个可靠的做法是在数据变更后立即对受影响的键调用 delete,这样用户就不会看到旧版本。
post.save()
cache.delete("post_" + str(post.id))版本控制胜过删除
为 set 和 get 传入版本号,递增该数字即可立即让整批旧键同时失效。
cache.set("stats", data, version=2)原子计数器
使用 incr 安全地增加数值键,非常适合多个请求同时更新同一个值的浏览次数统计。
cache.incr("page_views")最后再清空所有内容
clear 方法会清空整个缓存。这是一种强力手段,应留给部署使用,而不要用于日常更新。
cache.clear()快速检查
现在来确认读取或计算一个值的最简洁方式。
回顾
您已经掌握了低级 API:使用 get_or_set 实现旁路缓存,然后通过删除键或递增版本号保持数据新鲜。🎯
用 AI 导师学习 Python — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 30
- 课程
- 120
常见问题解答
「底层缓存 API 与失效处理」课时是免费的吗?
是的 — 「底层缓存 API 与失效处理」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Django Academy 课程的其余内容,请升级到 CoddyKit PRO。 Django Academy 课程共包含 4 节课。
「底层缓存 API 与失效处理」这节课中我会学到什么?
缓存查询结果并清除过期键 你通过在浏览器中直接运行的动手代码来练习 Django Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Django Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Django Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「底层缓存 API 与失效处理」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Django Academy 课中编写并运行代码吗?
能。每节 Django Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 缓存后端与 Redis
- 按视图和按站点缓存
- 模板片段缓存
- 底层缓存 API 与失效处理