缓存


定义


缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。


应用场景


计算机硬件,CPU的速率比较快,和内存、硬盘的速率不在一个数量级,于是引入了Cache以提高计算机的处理能力。

  • CDN、反向代理
    CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据;而反向代理则部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是方向代理服务器,如果方向代理服务器中缓存着用户请求的资源,就将其直接返回给用户。

  • 本地缓存
    本地缓存主要放一些项目的配置信息

  • 分布式缓存
    现阶段,中大型互联网架构,会有专门分布式缓存集群,存储热点数据,提高数据的访问速度,增强用户体验。


引发的问题


  • 数据错乱
    从事互金行业,用户的持仓包括P2P、基金、银行理财等多个项目,会遇到缓存原因导致用户的持仓没有更新或者错误。
    和基金、银行等第三方对接,我方只会存储用户的基本数据,核心的清结算都是第三方处理,会存在持仓更新延迟大的问题。虽然会有定时任务去补偿,但偶尔还是会遇到第三方问题,导致用户问题反馈较多。
  • 缓存穿透(查询不存在的key,缓存不会命中,然后直接就查DB)
    以hash形式存储,在控制层先进行校验,不符合则丢弃
  • 缓存并发(多个client同时set key引起的并发问题 )
    redis自身就是单线程操作,多个client并发操作,加锁即可。
  • 缓存击穿(大批量key同时失效时, 会有大量的请求同时访问DB)
    1.加锁排队限流:验证码、漏桶。实际项目比较粗暴,并发1000,超过直接返回异常
    2.数据预热:上次春节项目,除夕下午预热所有的用户数据,缓存时间7天
  • 热点key
    热点数据,大量的用户访问,缓存到了同一台,达到单台服务器的极限,造成性能的瓶颈。
    春节活动用户数据预热,存在热点key现象,有提前预防。但是有一个运营数据统计(用户领取数),大量的inc操作,达到redis的瓶颈。最后牺牲了实时数据统计,采用ELK日志统计。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值