一、先明确我要保证的是下面2 种一致性存和读格式一致Redis 数据 和 数据库数据一致二保证【存和读格式一致】核心规则谁存的谁读存什么读什么完全由代码控制不是 Redis 自动做的。怎么保证存的时候用什么类读的时候就用什么类存Template读Template字段不能乱加、乱删存的时候有 id、name、type读的时候也必须有这三个字段key 名字必须一模一样存template:1读template:1一句话存和读是同一套代码、同一个类、同一个 key → 格式永远一致三保证【Redis 和 数据库一致】核心原则只要数据库变了Redis 必须立刻更新 / 删除最标准、最安全、公司都在用的方案方案 1查询时 → 缓存只存不变的数据查 Redis → 有 → 直接返回 查 Redis → 没有 → 查数据库 → 写入 Redis方案 2修改 / 删除时 → 必须删缓存最关键第一步修改数据库 第二步删除 Redis 里的旧缓存为什么要删因为删了之后下一次查询会自动查新库 → 写入新缓存数据自动对齐真实代码最标准写法查询读GetMapping(/template/{id}) public Result get(PathVariable Long id){ String key template: id; // 1. 读 Redis Template obj redisTemplate.opsForValue().get(key); if(obj ! null){ return Result.success(obj); } // 2. 读数据库 obj templateMapper.selectById(id); // 3. 写 Redis redisTemplate.opsForValue().set(key, obj, 2, TimeUnit.HOURS); return Result.success(obj); }修改写PostMapping(/update) public Result update(RequestBody Template template){ // 1. 更新数据库 templateMapper.updateById(template); // 2. 删除缓存关键 redisTemplate.delete(template: template.getId()); return Result.success(); }四、终极保证一致性的 3 条铁律1. 读的时候先读 Redis没有再读库读完立刻写缓存2. 改的时候先改数据库再删 Redis 缓存3. 格式上谁存的谁读存什么类型读什么类型五、最通俗一句话总结读缓存优先改删缓存同步格式存啥读啥做到这 3 条Redis 永远不会乱永远和数据库一致