应用缓存:本地缓存、Redis 与一致性|学员任务书
任务与起点
沿本人累计商城项目继续,先保留可运行提交。本日交付:缓存一致性记录与订单 CSV 串行/线程/进程汇总工具。领取当天 student/W03-D02/;README 和显式 TODO 是练习起点,不是另一份完整商城。新增机制先完成最小例,再接本人业务模块。老师提供输入合同、检查工具与框架支架;刻意不提供业务实现和个人变体答案。
输入输出与合同
金额保持 Decimal 和 API 两位小数字符串;原订单状态、公共字段和权限合同不变。只能操作自己的实验数据。线程、进程或缓存不得绕开数据库事务和服务端权限。在当天日包目录逐条运行:
python check_report.py
python run_report.py orders_sample.csv
python -m pytest test_exercise.py -q首次红灯应来自 NotImplementedError/STUDENT_TODO;依赖错误和路径错误先修,不能记作业务红灯。
分段任务
- 用三张虚构订单手算分组结果;读本人页面导出 CSV,标注只包含当前页。
- 在 report_exercise.py 完成纯计算、分批和合并,同一规则运行 serial/thread/process。
- 运行 check_report.py;坏金额必须使本次汇总失败;空文件结果为空,重复订单不得重复计入导入报表。
- 复用原 exercise.py 缓存骨架,完成 get/put/invalidate;用可注入时钟检查到期而非 sleep。
- 回到商品详情:改价提交后失效;订单创建从数据库读价;单独注入缓存故障,身份故障另测。
- 个人变化:更改批大小或 TTL;三种汇总结果一致,记录重复测量及引入进程的成本。
验收与独立解释
三种模式分组金额与数量完全一致;spawn 独立 PID;坏行不返回半报告;缓存命中/过期/失效;交易快照权威。对每项保留输入、预测、实际、修复与复验;至少一条正常、一条错误、一条边界。AI 只改允许文件,先保存起点、检查 diff,再解释一处接受或拒绝的建议。同伴只按说明运行,不由作者代敲。
学生提交本人累计代码、固定提交、命令、测试结果和个人变化。课堂机制、本机 HTTP 替身、真实 MySQL/Redis、浏览器、本人完成分别标注;未运行写待验证。只交机制小函数或教师演示截图,不能替代累计商城增量。
分层与下一日
核心完成当天分段任务与独立变化;进阶更换同规模输入或故障;复杂分布式锁、集群与完整 Outbox 不纳入必修,也不挤占个人操作。下一日:用既有 Python 处理会话、权限拒绝与审计;缓存降级不能放松身份验证。