huihttp 2021-11-29 17:56 采纳率: 0%
浏览 27
已结题

双写一直性问题,感觉延迟双删也存在问题,大家有没有更好地办法?

问题遇到的现象和发生背景
  1. 先更新数据库,再更新缓存》问题:更新完数据库后,出现没有执行缓存更新
  2. 先删除缓存,再更新数据库》问题:删除缓存后,更新数据库前会有B线程重新读到旧值,放到redis中,然后A线程再更新数据库,导致数据库更新成功,redis还是旧值
  3. 先删除缓存,再更新数据库,再延迟删除缓存》问题延迟删除失败了呢?会不会退化成第一或者第二种情况
我的解答思路和尝试过的方法

所以我想这样是不是更靠谱一些,优化一下方案1:
(1) 先设置过期时间为5s (保证缓存能存活一段时间,业务执行完后也能够保证redis短时间内过期,其他线程重新从数据库中读取,假如执行失败,直接放回给用户,更新失败),
(2) 再更新数据库 (此前或期间B线程过来,会命中缓存,返回旧数据,)
(3) 再更新缓存 ,同时更新过期时间 (假如执行成功第一步失效,过期时间恢复正常;假如失败,有第一步保底,做延迟删除,旧数据存活时间也只有5秒)

大家帮忙回答一下,我这种方案是否可行?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月7日
    • 创建了问题 11月29日

    悬赏问题

    • ¥15 oracle集群安装出bug
    • ¥15 关于#python#的问题:自动化测试
    • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
    • ¥15 教务系统账号被盗号如何追溯设备
    • ¥20 delta降尺度方法,未来数据怎么降尺度
    • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
    • ¥15 再不同版本的系统上,TCP传输速度不一致
    • ¥15 高德地图点聚合中Marker的位置无法实时更新
    • ¥15 DIFY API Endpoint 问题。
    • ¥20 sub地址DHCP问题