打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
直播平台开发,如果缓存中数据不一致发生,平台该如何挽救
userphoto

2023.07.03 山东

关注

缓存是直播平台开发的重要帮手,在很多时候能够帮助平台化解访问压力,但缓存的应用也会出现新的问题,比如缓存数据的不一致性,比如缓存雪崩、缓存穿透等问题,面对这些问题,直播平台开发该准备什么样的解决方案呢?

  



一、数据不一致性产生的原因

1、先操作缓存,再写数据库成功之前,如果有读请求发生,可能导致旧数据进入缓存,引发数据的不一致性,在分布式环境下,数据的读写都是并发的,一个服务多机器部署对同一个数据进行读写,在数据库层面并不能保证完成顺序,就有可能后读的操作先完成,这时,如果直播平台开发不采用给缓存设置过期时间的策略,那该数据永远都是脏数据。

解决方案是:可采用更新前后双删除缓存策略;可以通过串行化解决,保证同一个数据的读写落在同一个后端服务商。

2、先操作数据库,再清除缓存,如果删除缓存失败了,就会出现数据不一致的问题。

  



二、如何防止缓存穿透、缓存雪崩、缓存击穿

1、缓存穿透,缓存穿透是说直播平台开发收到一个请求后,但是该请求缓存中不存在,只能去直播平台开发数据库中查询,然后放进缓存,但当有好多请求同时访问一个数据时,业务系统会把这些请求全发到数据库中,或者恶意构造一个逻辑上不存在的数据,然后大量发送这个请求,这样每次都会被发送到数据库,导致数据库挂掉。

解决方法,对于恶意访问,可以先做校验,对恶意数据直接过滤掉;或者是缓存空结果,对查询不存在的数据也记录在缓存中,减少查询数据库的次数。

  



2、缓存雪崩,是指当我们给直播平台开发所有的缓存设置了同样的过期时间,当某一时刻,整个缓存的数据全部过期了,然后瞬间所有的请求都被抛向了数据库,数据库就崩掉了。

解决方法,要么是分治,划分更小的缓存区间,按区间过期;要么是给每一个key的过期时间加一个随机值,避免同时过期,达到错峰刷新缓存的目的。

声明:以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
分布式架构原理解析
【缓存】缓存中常见的4种问题分析以及解决方案
读完这篇文章,就基本搞定了Redis数据库
后端缓存的23个关键关注点
Redis和MySQL如何保持数据一致性?
Java整体知识架构详解之分布式架构
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服