Django Academy · 课时

底层缓存 API 与失效处理

缓存查询结果并清除过期键

第 4 / 4 课13 个步骤

底层缓存 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 缓存后端与 Redis
  2. 按视图和按站点缓存
  3. 模板片段缓存
  4. 底层缓存 API 与失效处理
← 返回 Django Academy