缓存一致性
-
缓存并发问题
缓存穿透(击穿)问题
简介:高并发场景下,如果某一个key被高并发的访问没有命中,出于对容错性的考虑会考虑从后端数据库去获取数据,从而导致大量的请求达到了数据库,导致数据库执行了大量的不必要的操作,从而导致了大量的冲击和压力,通常可以通过如下几种方法解决问题
缓存空对象
- 如果缓存单个对象的话可以通过字段标识来区分,这样避免请求穿透到后端数据库
单独过滤处理:对所有请求数据可能为空的key单独存放,并在请求前做拦截这样避免请求穿透到后端数据库(适合命中不高更新不频繁的数据)
缓存雪崩现象
缓存颠簸问题
简介:一种比雪崩更轻微的故障,但是也会在一段时间内对系统造成一定的冲击,一般由于缓存节点故障导致,解决办法一般是使用一致性hash算法解决
正题:缓存雪崩
简介:由于缓存的原因,大量的请求到达后端的数据库,从而导致后端数据库崩溃,整个系统崩溃的灾难
解决方案:从架构角度可以通过限流、降级、熔断等手段来降低影响,也可以通过多级缓存来避免这种灾难,从研发体系的角度来说应该加强压力测试,尽量的模拟真实的场景,今早的来防范这种问题实战案例讲解
股票分时线项目
做法:
首先利用Gauva Cache缓存缓存最近几分钟内的所有用户的分时数据,key是数据的时间单位到分钟,
- 然后设定一个定时任务吧最近几分钟的数据都写入到redis里面,保证redis里的数据是最新的
- note:redis里面使用的一种特殊的数据结构hash结构,key也是小时和分钟
