讲师中心 微信公众号

工具推荐

视频效率加速
剧云
剧云

中文短剧剧本制作平台

Seko
Seko

AI短剧一键生成成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

Laper
Laper

剧本策划到成片协作

Python 缓存失效策略设计

冬枫酱_3669

冬枫酱_3669

发布时间:2026-01-29 18:21:09

|

140人浏览过

|

来源于php中文网

原创

缓存失效的常见触发场景包括:用户修改商品价格、管理员更新配置、订单状态变更等业务动作;需精准删除关联多个key的数据,并绑定失效逻辑到数据变更点。

python 缓存失效策略设计

缓存失效的常见触发场景有哪些

缓存失效不是“要不要删”,而是“什么时候删、删哪些、删完怎么补”。真实系统里,cache.delete() 或 cache.clear() 很少单独出现,它总和业务动作耦合:用户修改了商品价格、管理员更新了配置、订单状态从“待支付”变成“已支付”。

  • 用户提交表单后,需立即让对应商品详情页的缓存(key 含 product:123)失效,否则前端看到旧价格
  • 一个数据库行被更新,但缓存里可能有多个 key 关联它(如 user:456:profile、user:456:orders:recent),得批量清理
  • 某些缓存是组合生成的(比如首页推荐列表依赖用户标签 + 商品库存 + 活动开关),任一上游数据变动,都应触发该缓存失效

不区分场景统一用 timeout 被动过期,会导致脏数据窗口不可控;全靠手动 delete 又容易漏——关键在把失效逻辑“绑定”到数据变更点。

Django Cache 中如何安全地批量删除带通配符的 key

Django 默认缓存后端(如 LocMemCache、RedisCache)都不支持原生通配符删除。直接写 cache.delete("user:<em>")</em> 是无效的,它只会尝试删一个叫 user: 的字面 key。

  • Redis 后端可用 cache._cache.keys("user:*")(注意是私有属性,仅限 redis-py 后端),再循环 cache.delete(key);但高并发下 keys 命令阻塞 Redis,生产禁用
  • 更稳妥的做法是“主动记录 key 映射”:写缓存时,用一个集合 key(如 cache_keys:user:456)存下所有关联 key,失效时先取集合、再批量删、最后清空该集合
  • 如果用 django-redis,可启用 KEY_PREFIX 配合 cache.clear() 清局部命名空间,但要注意它会清整个前缀下的所有 key,包括临时缓存

别依赖 cache.keys() 做线上清理逻辑,它不是原子操作,且部分缓存后端根本不实现该方法。

立即学习“Python免费学习笔记(深入)”;

Python Hardener
Python Hardener

通过完整的安全审查、代码整洁重构、健壮的错误处理、正确的日志记录以及完整的文档字符串覆盖,强化 Python 脚本。

下载

使用 time-based 失效时,为什么有时缓存没按预期刷新

timeout 参数看似简单,但实际受三个因素干扰:

  • 缓存后端时间不同步:Django 进程所在机器时间 vs Redis 服务器时间偏差 >1 秒,就可能导致 key “提前消失”或“滞留”
  • timeout=0 在某些后端(如 LocMemCache)表示“永不过期”,但在 PyLibMC 中可能被转成最大整数,行为不一致
  • 并发读写时,多个请求同时发现缓存 miss,都去重建,结果写入多份相同值——这不是失效问题,但会让“刚刷新就又脏了”的错觉更明显

建议:对时效敏感的数据(如库存、秒杀开关),不用纯 timeout,改用“主动失效 + 短 timeout 保底”双机制。例如设 timeout=30,同时在库存变更时显式 cache.delete("stock:789")。

缓存穿透与失效雪崩的防御要点

缓存穿透(查不存在的 key,反复打穿缓存直击 DB)和失效雪崩(大量 key 同时过期,DB 瞬间被压垮)本质都是失效策略没兜住。

  • 对穿透:写缓存时,对查无结果的 key 也存一个空值(如 cache.set("user:999999", None, timeout=60)),并加前缀区分(如 empty:user:999999),避免和真实 None 混淆
  • 对雪崩:不要让大批 key 共享同一 timeout。可用随机偏移,例如 timeout=300 + random.randint(0, 60);或者按业务重要性分层设置过期时间(核心配置 5 分钟,用户偏好 30 分钟)
  • 更关键的是,失效后重建缓存的过程必须加锁。用 cache.add("lock:product:123", "1", timeout=5) 判断是否获得重建权,没抢到的请求等待或回退默认值,而不是各自查 DB

空值缓存和分布式锁不是可选项,是失效策略上线前必须验证的环节。

热门AI工具

更多
Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

相关专题

更多
Python Web 框架 Django 深度开发
Python Web 框架 Django 深度开发

本专题系统讲解 Python Django 框架的核心功能与进阶开发技巧,包括 Django 项目结构、数据库模型与迁移、视图与模板渲染、表单与认证管理、RESTful API 开发、Django 中间件与缓存优化、部署与性能调优。通过实战案例,帮助学习者掌握 使用 Django 快速构建功能全面的 Web 应用与全栈开发能力。

593

2026.02.04

Python Django REST Framework接口安全与认证体系实践
Python Django REST Framework接口安全与认证体系实践

本专题围绕 Django REST Framework 展开,深入讲解 API 认证、JWT 鉴权、权限控制、接口安全防护以及防攻击策略设计。通过完整后端案例,帮助开发者构建安全可靠的 Web API 服务体系。

260

2026.06.29

什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

2173

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

3634

2023.10.07

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

3511

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1065

2023.12.29

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4909

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4475

2023.11.14

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

60

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn