栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据库与redis缓存双写数据不一致方案

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据库与redis缓存双写数据不一致方案

数据库与redis缓存双写数据不一致方案
数据库与缓存不一致只有在出现并发读写时才会出现,如果每天上亿的流量,每秒并发读是几万,每秒只要有更新缓存的请求,
就很可能会发生数据库与缓存不一致的情况。
解决方案。
1、简单方案 先更新数据库,再删除缓存, 延时再删除缓存。
2、数据库和缓存更新读取异步串行化
  更新数据的时候,根据数据的唯一标识,将操作路由后,发送到一个jvm内部队列,读取数据的时候,如果发现数据不在缓存中,那么将读取数据操作,
  根据数据的唯一标识,将操作路由发送到相同jvm的内部队列,一个队列对应一个工作线程,每个工作线程串行执行一条条请求数据,这样的化一个变更操作,先执行更新数据库,再删除缓存,
  在变更操作没有执行完之前,一个读请求将在队列中积压,自悬等待更新操作完成,如果在预期时间范围内更新完成,则返回,如果超时,则从数据库中读取返回,
  队列可以优化同时多个更新请求,只积压一个。
  方案缺点
    1、读请求长时阻塞
    2、读请求并发量过高
    3、多服务器实例部署的请求路由
    4、热点商品的请求路由问题,导致数据倾斜
  1、线程池加内存队列,通过listener进行初始化。单例线程池
  2、两种请求对象封装。
  3、请求异步执行封装
  4、两种请求Controller封装
  5、读请求去重优化
  6、空数据请求过滤优化

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756502.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号