目前项目包含企业网站、微信小程序和APP,三个终端共用一套后端内容接口。
后端使用 Spring Boot,数据保存在 MySQL 中,部分产品详情和文章内容使用 Redis 缓存,网站前面配置了 Nginx。
目前遇到的问题是:
在管理后台修改产品名称、产品参数或文章内容后,数据库中的数据已经更新,但不同终端显示的内容不一致。
具体表现如下:
管理后台:已经显示新内容
企业网站:刷新后显示新内容
微信小程序:部分页面仍然显示旧内容
APP:退出页面重新进入后,偶尔还是旧内容
目前的内容读取链路大致如下:
网站、小程序、APP
↓
Nginx
↓
Spring Boot接口
↓
Redis缓存
↓
MySQL数据库
内容发布时,后端会先更新数据库,再删除对应的 Redis 缓存。
代码大致如下:
@Transactional
public void updateProduct(ProductUpdateRequest request) {
Product product = productRepository.findById(request.getId());
product.setProductName(request.getProductName());
product.setContent(request.getContent());
product.setUpdatedAt(LocalDateTime.now());
productRepository.save(product);
String cacheKey = "content:product:" + product.getId();
redisTemplate.delete(cacheKey);
}
查询产品详情时,先读取 Redis:
public ProductVO getProductDetail(Long productId) {
String cacheKey = "content:product:" + productId;
ProductVO cacheData =
redisCacheService.get(cacheKey, ProductVO.class);
if (cacheData != null) {
return cacheData;
}
Product product = productRepository.findById(productId);
ProductVO result = convertToVO(product);
redisCacheService.set(
cacheKey,
result,
Duration.ofMinutes(30)
);
return result;
}
接口返回的数据中也包含更新时间和内容版本:
{
"productId": 1001,
"productName": "企业数据管理系统",
"contentVersion": 8,
"updatedAt": "2026-07-24 15:20:00"
}
已经尝试过的方法
目前已经尝试:
更新数据库后删除 Redis 缓存;
手动清空 Redis 中对应的内容缓存;
重启 Spring Boot 服务;
在小程序端重新进入页面;
给接口增加内容版本号;
检查数据库,确认数据已经更新;
使用浏览器直接请求接口,返回的是新数据。
但是小程序和APP中仍然偶尔出现旧内容。
怀疑问题可能来自以下位置:
Redis缓存
Nginx缓存
CDN缓存
小程序本地缓存
APP本地数据库
接口请求重复
多台服务器之间的缓存不一致
期望结果
希望在管理后台发布内容后:
数据库更新
→ Redis缓存失效
→ 网站、小程序和APP重新获取最新内容
不同终端可以在较短时间内显示同一版本的数据,同时又不希望每次进入页面都绕过缓存直接查询数据库。
想请教以下问题:
多端共用内容接口时,缓存更新的正确顺序应该怎样设计?
数据库更新后直接删除 Redis 缓存,是否可能出现旧数据再次写入缓存的问题?
怎样判断旧数据来自 Redis、Nginx、CDN还是客户端本地缓存?
是否应该增加统一的内容版本接口,让客户端先比较版本再更新?
多台服务实例部署时,怎样保证每台服务器的本地缓存同时失效?
对于网站、小程序和APP多端内容同步,有没有更稳妥的缓存更新方案?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。