在电商系统中,哪些数据需要放到缓存?哪些数据需要放到DB永存呢? 📅 发布时间:2026/7/16 5:32:25 👁️ 浏览次数: 先给结论有需要被记住而非仅仅被看到的信息。 用户在淘宝上的每一次点击可以被遗忘缓存过期但他的每一笔交易必须被铭记DB永存。这就是工业级系统设计中性能与正确之间的永恒权衡。我们必须先建立一个认知缓存是“便签纸”关系型数据库才是“法律账本”。便签纸缓存写得快、看得快但可能写错、可能丢失、可能被风吹走而法律账本DB写得慢但它是唯一具备法律效力、绝对准确、永久保存的依据。下面我以 “用户在淘宝下单买一件衣服” 的全流程为例详细拆解哪些数据必须落DB哪些放缓存以及为什么。1. 核心原则什么决定了数据存哪里判定维度放关系型数据库 (PolarDB/OceanBase)放缓存 (Tair/Redis)一致性要求强一致绝对不能错最终一致允许短暂不准数据生命周期永久保存临时/有TTL业务后果错了资损/法律风险/客诉错了体验下降/可重试操作类型复杂事务、关联查询、聚合统计简单KV读写、高频计数数据价值核心资产加速副本2. 购物全流程数据归属详解场景一浏览商品详情页数据项存储位置原因商品标题、描述、SKU属性缓存 (主) DB (备)读多写少缓存命中率高修改时异步刷新缓存商品主图/视频CDN OSS大文件不适合进KV缓存实时价格缓存 DB价格变更时通过消息队列秒级刷新缓存DB是定价权威来源实时库存缓存 (扣减) DB (校准)高并发下用Redis原子扣减防超卖订单创建成功后异步落DB持久化评论列表缓存 Lindorm评论内容存Lindorm(宽表)热门评论摘要进Redis猜你喜欢推荐缓存推荐引擎预计算结果纯读场景关键点库存的双写逻辑用户点击立即购买时先在Redis中执行DECR扣减库存毫秒级响应抗住秒杀流量。但这只是预扣真正的库存变更必须在订单创建事务中写入PolarDB。如果订单取消或支付超时Redis和DB都要回滚。Redis是挡箭牌DB是真账本。场景二提交订单数据项存储位置原因订单主表PolarDB/OceanBase核心交易数据涉及资金、履约、售后必须强一致永久存储订单明细(SKU/数量/单价)PolarDB/OceanBase与主表在同一事务中写入保证原子性优惠快照(用了什么券/满减)PolarDB/OceanBase退款/审计时必须精确还原当时优惠规则收货地址快照PolarDB/OceanBase用户后续修改地址不影响历史订单订单号生成Tair(序列号) DBRedis自增生成全局唯一IDDB记录映射关系购物车状态缓存 (主)购物车是临时意图非正式交易DB仅做异步持久化防丢失为什么订单必须落DB事务性扣库存、创建订单、扣优惠券、记积分这4个操作要么全成功要么全失败只有DB支持ACID事务。可追溯3个月后用户投诉我没收到货客服需要从DB查出完整订单链路。缓存早就过期了。合规性电商法要求交易记录保存至少3年缓存无法承担此法律责任。场景三支付与履约数据项存储位置原因支付流水OceanBase资金数据金融级强一致RPO0支付状态回调DB 缓存DB持久化缓存更新订单状态供前端快速轮询物流单号/轨迹DB 缓存DB存权威记录缓存存最新轨迹供高频查询发票信息PolarDB税务合规不可变风控决策结果缓存实时拦截用事后分析从日志/数仓取场景四用户相关数据数据项存储位置原因用户名/手机号/实名信息PolarDB核心身份数据加密存储强一致Session/Token缓存登录态是临时的过期即失效用户标签(偏好/等级)缓存 DB画像系统预计算写缓存DB存原始行为数据浏览/搜索历史缓存(近期) Lindorm(长期)近期行为用于实时推荐长期行为用于离线分析收藏夹缓存 DB高频读走缓存DB保证换设备后数据不丢3. 强一致到底意味着什么以支付为例对比两种一致性模型维度强一致 (OceanBase/PolarDB)最终一致 (Redis缓存)写入后读取立即读到最新值可能读到旧值延迟ms~s级故障恢复RPO0数据零丢失可能丢失未持久化的写入跨行/跨表支持分布式事务不支持适用场景转账、下单、库存确权展示、计数、会话、预扣代价延迟较高(ms级)吞吐受限延迟极低(μs级)吞吐极高一句话总结强一致 在任何时刻、任何节点、任何故障场景下读到的数据都等于最后一次成功写入的值。 这是用性能和复杂度换来的绝对正确只用在错了就出大事的地方。4. 架构全景图一次购物的数据流转用户点击购买 │ ▼ ┌──────────────┐ 预扣库存 ┌─────────────┐ │ 前端/App │ ─────────────→ │ Tair(Redis) │ ← 毫秒级响应抗并发 └──────────────┘ └─────────────┘ │ │ │ 创建订单(同步) │ 异步同步 ▼ ▼ ┌──────────────────────────────────────────────┐ │ PolarDB / OceanBase │ │ ┌─────────┐ ┌─────────┐ ┌────────────────┐ │ │ │订单表 │ │库存表 │ │优惠/支付流水表 │ │ │ │(强一致) │ │(强一致) │ │(强一致) │ │ │ └─────────┘ └─────────┘ └────────────────┘ │ │ ↑ ACID事务保证原子性 │ └──────────────────────────────────────────────┘ │ │ 订单创建成功 → 发消息 ▼ ┌──────────────┐ │ 消息队列 │ → 通知缓存更新订单状态 │ (RocketMQ) │ → 触发积分/通知等异步任务 └──────────────┘终极总结问题答案哪些必须落DB一切涉及钱、权、责、法的数据订单、支付、库存确权、用户身份、合同、发票哪些放缓存一切为了快、省、扛的数据商品展示、Session、预扣库存、推荐结果、热点配置两者关系DB是真相之源缓存是高性能投影。缓存可以脏、可以丢、可以过期但DB永远是对的为什么不全放DBDB扛不住百万QPS延迟也满足不了用户体验为什么不全放缓存缓存没有事务、不能持久、无法追责用来管钱等于裸奔
MemGraphRAG: Memory-based Multi-Agent System for Graph Retrieval-Augmented Generation用于图检索增强生成的基于记忆的 一、研究背景与问题定位 研究领域:检索增强生成(RAG)与图检索增强生成(GraphRAG) 核心问题: 传统RAG在处理大规模非结构化语料时,信息碎片化导致检索上下文不连贯 现有GraphRAG方法采用孤立片… 2026/7/16 5:32:25
PHP应用集成Google Authenticator:TOTP算法原理与实战实现 1. 项目概述:为什么你的PHP应用需要Google Authenticator?在今天的网络环境里,单靠一个密码来守护账户安全,就像用一把挂锁去锁金库大门,形同虚设。数据泄露、撞库攻击、钓鱼网站防不胜防。作为开发者,我们… 2026/7/16 5:30:22
python最重要的模块之_json 一、json模块【1】基本概念与语法序列化是将数据结构或对象转换为字节流(二进制数据)以便存储或传输即序列化:将本语言支持的高级对象转为ison格式字符串的过程(若有嵌套外面是单引号, 里面数据是双引号"") 对应函数: json.dumps… 2026/7/16 5:30:22
【2014-01-27】cocos2dx学习笔记:CCNode回调流程 [历史归档] 本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。 发布时间: 2014-01-27 | 标题:cocos2dx学习笔记:CCNode回调流程 | 分类: 编程 / C &&… 2026/7/16 5:44:33
C++ priority_queue 深度解构:从堆算法到容器适配器实现 1. 项目概述:从“会用”到“懂它”,一次对 priority_queue 的深度解构如果你用过 C STL 里的priority_queue,大概率会觉得它很方便:push一个元素,pop出来的总是当前“最大”或“最小”的那个。面试官问你它的底层是什么… 2026/7/16 5:42:32
集成过压保护模拟开关的设计与应用实践 1. 为什么我们需要重新思考保护电路设计在电子系统设计中,过压保护一直是个让人头疼的问题。传统方案通常采用TVS二极管、保险丝、继电器等分立器件搭建保护电路,这种方案我已经用了十几年。但最近在做一个工业传感器项目时,这套方案让我栽了… 2026/7/16 5:42:32
电子病历自动生成与结构化:AI模型赋能医疗信息管理新路径 电子病历自动生成与结构化:AI模型赋能医疗信息管理新路径 在医疗信息化不断推进的当下,电子病历作为医疗数据的重要载体,其质量与利用效率直接影响着医疗服务的质量和医疗研究的进展。电子病历自动生成与结构化技术,借助AI模型的力… 2026/7/16 5:40:31
二维数组对角线操作实战:从坐标规律到焦点遍历的双解剖析 1. 二维数组对角线操作入门:从概念到实战第一次接触二维数组对角线操作时,我也曾被那些坐标规律绕得头晕。直到在算法比赛中因为对角线问题丢分后,才真正静下心来研究这个看似简单却暗藏玄机的话题。二维数组对角线操作是信息学竞赛和算法面试… 2026/7/16 5:40:31
题解:AcWing 237 程序自动分析 【题目来源】 AcWing:237. 程序自动分析 - AcWing题库 【题目描述】 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。 考虑一个约束满足问题的简化版本:假设 x1,x2,x3,…x_1,x_2,x_3,…x1,x2,x3,… 代表程… 2026/7/16 5:36:29
A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并 摘要:本文系统讲解如何利用Codex App的Review功能与GitHub PR工作流,实现从代码修改到安全合并的完整流程。涵盖Review面板深度使用、/review命令实战、GitHub Connector配置、PR描述撰写技巧,以及常见问题排查方法。通过多个实战案例和流程图,帮助开发者建立高效的AI辅助代… 2026/7/16 0:00:26
HAM未来路线图:下一代高可用迁移技术的发展方向与展望 HAM未来路线图:下一代高可用迁移技术的发展方向与展望 【免费下载链接】ham Based on the remote memory access capability and high bandwidth of the UB, deterministic duration virtual machine live migration is achieved, addressing planned downtime issu… 2026/7/16 0:04:27
月球是否是从地球分离出去的?——容度原理解释 月球是否是从地球分离出去的?——容度原理解释一、月球起源的“三大假说”与容度原理的重新审视月球起源的三大假说——捕获说(月球是太阳系中独立的星体,被地球引力捕获)、共生说(月球与地球同时从原始星云中形成&… 2026/7/16 0:06:27
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/16 3:47:53
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41