缓存一致性、失效与权限范围
Redis、缓存与异步任务#Python全栈#第十五阶段#Redis、缓存与异步任务#缓存一致性、失效与权限范围约 684 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
更新数据库后,是更新缓存还是删除缓存?
追问 复杂查询结果、派生数据和并发写入各有什么取舍?为何顺序正确仍不等于不存在所有竞态?
“先删除缓存再更新数据库”可能怎样产生旧数据?
追问 另一个请求在中间查数据库并回填时,会发生什么?怎样画出明确时序而不是只背操作顺序?
“先更新数据库再删除缓存”还可能有哪些失败窗口?
追问 删除失败、事务未提交的读取和之前启动的旧查询回填怎样影响结果?如何安排重试与陈旧时间上限?
延迟双删解决什么问题,为什么不能作为强一致保证?
追问 延迟如何选择、第二次删除如何可靠执行?慢查询和调度抖动为何可能超出预想窗口?
事务提交后失效缓存如何与通知机制衔接?
追问 提交后回调、Outbox 或变更事件各能改善什么?数据库与 Redis 之间为什么不会自动组成一个原子事务?
缓存版本号和命名空间切换可以怎样减少批量删除?
追问 版本读取成本、旧键回收与版本号丢失怎样处理?为何不能在每次用户请求中随机生成版本?
更新单条记录时,怎样处理列表、统计和关联缓存?
追问 题目分类或发布状态改变会影响哪些结果?TTL、依赖追踪和按组失效如何权衡复杂度?
用户专属缓存为什么必须考虑权限和数据归属?
追问 角色变更、注销、切换租户和不同用户共用设备时,哪些键或内容必须失效或重新验证?
本地一级缓存与 Redis 二级缓存怎样保持合理一致性?
追问 进程独立状态、广播失效和短 TTL 如何配合?通知丢失时,为什么需要有界失效或版本核对?
何时应直接读取可信数据源而不使用旧缓存?
追问 授权、资金、库存确认与展示统计的一致性需求怎样区别?怎样明确“允许延迟多久”,而不是笼统要求所有数据强一致?