首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

直播源码开发,面对常见问题的不同解决方案

缓存穿透、缓存击穿、缓存雪崩,这些都是直播源码开发在使用缓存时遇到的问题,根据直播源码开发的服务行业不同,面对这些缓存问题时采用的解决方案也不一样,具体方案我们来看一下。

一、缓存穿透

缓存穿透指的是缓存和数据库中都没有用户想要的数据,而用户不断发起请求,导致数据库压力越来越大,针对这个问题可用的方案有三种:验证拦截、缓存空数据、使用布隆过滤器。

1、验证拦截,接口层进行校验,如鉴定用户权限,对ID之类的字段做基础的校验。优势在于,在发布内容后需要维护最大id信息,实现也相对较简单;缺点在于,仅满足直播源码开发关键值比如id信息连续或数据不稀疏的场景,维护最大id时,需要原子性以保持并发和递增等一致性。

2、缓存空数据,当数据库查询到的数据为空时,也将这条数据进行缓存,但缓存的有效性设置的要短,避免影响正常数据缓存。优点在于,该方案可以保证对于数据库的请求是一次性的,可以拦截直播源码开发后续的重复请求,实现简单、直接;如果提供的查询值不重复,则无法有效缓存。

二、缓存击穿

缓存击穿是直播源码开发当前热点数据存储到期时,多个线程同时并发访问热点数据,因为缓存刚过期,所以并发请求都会到数据库中查询数据,主要是由于数据访问用户并发高,由于缓存实效等原因,并发请求同时发起数据库读取操作。

解决方案:设置热点数据永不过期;应用级别锁控制并发;使用分布式锁。

1、设置热点数据永不过期,好处在于简单,坏处在于需要task等其他方式维护数据更新。

2、应用级别锁控制并发,仅保留1个请求去查询并写入缓存,其他请求重试取缓存读取。好处在于可以减少同时发起请求的并发连接,直播源码开发应用级别支持,实现相对简单;坏处在于未获取到锁的线程会阻塞,不适合缓存写入等逻辑复杂。

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

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OrRtGmR4TOJxOiJYL3VC0N1g0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券