幸运蛋蛋pc开奖
在本篇文章里小编给大家分享了关于redis缓存穿透的解决方法以及相关实例内容,需要的朋友们学习下。

缓存技术可以用来减轻数据库的压力,提升访问效率。目前在企业项目中对缓存也是越来越。但是缓存不是说随随便便加入项目就可以了。将缓存整?#31995;?#39033;目中,这才是第一步。而缓存带来的穿透问题,进而导致的雪蹦问题都是我们迫切需要解决的问题。本篇文章将?#31227;?#26102;项目中的解决方案分享给大家,以供参考。

一、缓存穿透的原理

缓存的正常使用如图:

如图所示,缓存的使用流程:

1、先从缓存中取数据,如果能取到,则直接返回数据给用户。这样不用访问数据库,减轻数据库的压力。

2、如果缓存中没有数据,就会访问数据库。

这里面就会存在一个BUG,如图:

如图,缓存就像是数据库的一道防火墙,将请求比较频繁的数据放到缓存中,从而减轻数据库的压力。 但是如果有人恶意攻击,那就很轻松的穿透你的缓存,将所有的压力都给数据库。比如上图,你缓存的key都是正整数,但是?#31227;?#20559;使用负数作为key访问你的缓存,这样就会导致穿透缓存,将压力直接给数据库。

二、导致缓存穿透的原因

缓存穿透的问题,肯定是再大并况下。?#26469;?#20026;前提,我们分析缓存穿透的原因如下:

1、恶意攻击,猜测你的key命名方式,?#32531;?#20272;计使用一个你缓存中不会有的key进行访问。

2、第一次数据访问,这时缓存中还没有数据,则并发下,所有的请求都会压到数据库。

3、数据库的数据也是空,这样即使访问了数据库,也是获取不到数据,那么缓存中肯定也没有对应的数据。这样也会导致穿透。

三、解决缓存穿透

缓存穿透在于一步步规避穿透的原因,如图:

如上图所示,解决的步骤如下:

1、再web服务器启动时,提前将有可能被频繁并发访问的数据写入缓存。—这样就规避大量的请求在第3步出现排队阻塞。

2、规范key的命名,并且统一缓存查询和写入的入口。这样,在入口处,对key的规范进行检测。–这样保存恶意的key被拦截。

3、Synchronized双重检测机制,这时我们就需要使用同步(Synchronized)机制,在同步代码块?#23433;?#35810;一下缓存是否存在对应的key,?#32531;?#21516;步代码块里面再次查询缓存里是否有要查询的key。 这样“双重检测”的目的,还是避免并发下导致的没有意义的数据库的访问(也是一种严格避免穿透的方案)。

这一步会导致排队,但是第一步中我们说过,为了避免大量的排队,可以提前将可以预知的大量请求提前写入缓存。

4、不管数据库中是否有数据,都在缓存中保存对应的key,值为?#31449;托小(C这样是为了避免数据库中没有这个数据,导致的平凡穿透缓存对数据库进行访问。

5、第4步中的空值如果太多,也会导致内存耗尽。导致不必要的内存消耗。这样就要定期的清理空值的key。避免内存被恶意占满。导致正常的功能不能缓存数据。

最新资讯
瑞幸高管解读财报:合伙人模式反馈很好 数据还需时间

瑞幸高管解读财报:合

瑞幸咖啡11月13日公布了截至9月30日的2019年第三季度
傅盛:猎户星空签署B轮融资协议 11月底完成交易

傅盛:猎户星空签署B轮

猎豹移动董事长兼CEO傅盛宣布,在第三季度,猎户星空和外
让利30亿,斥1亿成立电商公司 董明珠在下什么大棋?

让利30亿,斥1亿成立电

很少进行价格战的格力,在双11中高调让利30亿元进行促销
腾讯高管解读三季度财报:游戏开发能力被消费者认可

腾讯高管解读三季度财

财报显示,腾讯第三季度营收972亿元,同比增长20.6%;第三季
16寸屏苹果MacBook Pro终于发布:屏幕大了 键?#35848;?#36827;

16寸屏苹果MacBook Pr

苹果公司刚刚正式推出了16英寸MacBook Pro,没有发布会,
16寸苹果MacBook Pro上手:它大了 也强了

16寸苹果MacBook Pro

这产品是2016年MacBook Pro大?#30446;?#20043;后的第一次重大升
最新文章
Linux下redis的安装与使用图文教程

Linux下redis的安装与

这篇文章主要介绍了Linux下redis的安装与使用,结合图
Redis利用Pipeline加速查询速度的方法

Redis利用Pipeline加

这篇文章主要给大家介绍了关于Redis利用Pipeline加速
谈谈Redis分布式锁的正确实现方法

谈谈Redis分布式锁的

这篇文章主要给大家介绍了关于Redis分布式锁的正确实
window手动操作清理redis缓存的技巧总结

window手动操作清理re

在本篇文章中小编给大家分享了关于window环境手动操作
redis与mongodb的区别总结

redis与mongodb的区别

在本篇文章里小编给大家分享的是关于redis与mongodb的
使用Redis实现延时任务的解决方案

使用Redis实现延时任

这篇文章主要介绍了使用Redis实现延时任务的解决方案,
幸运蛋蛋pc开奖 pk10走势图下载安装 pk10走势技巧盈利 玩老虎机包赢压分技巧 汽车小卖部卖什么赚钱 江西11选5前三组选计划软件 中央五台足球直播 打麻将技巧常用四招 北京pk拾赛车软件下载 恐怖嘉年华游戏 三公官网