重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这期内容当中小编将会给大家带来有关大数据中缓存穿透,缓存雪崩,缓存击穿以及解决办法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联建站是一家专注于做网站、成都网站设计与策划设计,龙南网站建设哪家好?创新互联建站做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:龙南等地区。龙南做网站价格咨询:18982081108
(1)缓存穿透:指的是操作直接穿过了缓存层面,直接到达db层面,从而称为缓存穿透。直接查询某一条不存在的数据,就会发生这种情况(其实还是要经过缓存层,只不过缓存层没有这条数据,就会发起db层面的操作)。
解决方案:
1. Bloom filter算法(布隆过滤器???)
2. 空值缓存: 一种比较简单的解决办法,在第一次查询完不存在的数据后,将该key与对应的空值也放入缓存中,只不过设定为较短的失效时间,例如几分钟,这样则可以应对短时间的大量的该key攻击,设置为较短的失效时间是因为该值可能业务无关,存在意义不大,且该次的查询也未必是攻击者发起,无过久存储的必要,故可以早点失效。
(2) 缓存雪崩:多个缓存数据设置的失效时间相同,在同一时间同时失效,大量系统请求从请求缓存变成请求数据库,造成数据库崩溃。
解决方案:
1. 交错失效时间(即更改数据缓存的有效期,建议设置成固定时间的随机时间,例如设置成3-5秒钟中间的任意时间)。
2. redis高可用
这个思想的含义是,既然redis有可能挂掉,那我多增设几台redis,这样一台挂掉之后其他的还可以继续工作,其实就是搭建的集群。
3.限流降级
这个解决方案的思想是,在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。
4. 数据预热
数据加热的含义就是在正式部署之前,我先把可能的数据先预先访问一遍,这样部分可能大量访问的数据就会加载到缓存中。在即将发生大并发访问前手动触发加载缓存不同的key,设置不同的过期时间,让缓存失效的时间点尽量均匀。
(3) 缓存击穿:缓存击穿实际上是缓存雪崩的一个特例,击穿与雪崩的区别即在于击穿是对于特定的热点数据来说,而雪崩是全部数据。(典型例子:微博的热点话题)。
解决方案:1. 二级缓存(参考链接)(阿里双十一流量缓存击穿解决办法)LRU-K算法
上述就是小编为大家分享的大数据中缓存穿透,缓存雪崩,缓存击穿以及解决办法是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。