介绍:
首页你要明白为什么要去用Redis?
1.Redis是用来减少数据库压力的,因为数据库承受压力能力较弱,而且数据库资源非常宝贵,一旦发生崩溃,后果可想而知,所以Redis就是用来解决这个问题的
2.Mysql的最高并发量可以达到16384,而Redis的最高并发可以达到10W,效果就不多介绍了,可以在很大程度上减轻数据库的压力。
为什么要去用Nginx部署静态页面呢?
1.首先介绍一下服务器的承受压力程度,tomcat服务器最高并发只有150,而node服务器最高并发也仅仅只有1000,那么如果在一秒钟来了10000或更多个请求的话,那是不是服务器就直接瘫痪了,所以nginx就能很好的避免这种现象发生,nginx的最高并发可以达到5W。
Redis穿透
缓存穿透是指查询一个数据库一定不存在的数据。
我们以前正常的使用Redis缓存的流程大致是:
1、数据查询首先进行缓存查询
2、如果数据存在则直接返回缓存数据
3、如果数据不存在,就对数据库进行查询,并把查询到的数据放进缓存
4、如果数据库查询数据为空,则不放进缓存
例如我们的数据表中主键是自增产生的,所有的主键值都大于1。此时如果用户传入的参数为-1,会是怎么样?这 个1,就是一定不存在的对象。程序就会每次都去查询数据库,而每次查询都是空,每次又都不进行缓存。假如 有人恶意攻击,就可以利用这个漏洞,对数据库造成压力,甚至压垮我们的数据库。
为了防止有人利用这个漏洞恶意攻击我们的数据库,我们可以采取如下措施:
如果从数据库查询的对象为空,也放入缓存,key为用于提交过来的主键值,value为null,只是设定的缓存过期时 间较短比如设置为60秒。这样下次用户再根据这个key查询redis缓存就可以查询到值了(当然值为null),从而 保护我们的数据库免遭攻击。
Redis雪崩
缓存雪崩,是指在某一个时间段,缓存集中过期失效。在缓存集中失效的这个时间段对数据的访问查询,都落到了 数据库上,对于数据库而言,就会产生周期性的压力波峰。
为了避免缓存雪崩的发生,我们可以将缓存的数据设置不同的失效时间,这样就可以避免缓存数据在某个时间段集中 失效。例如对于热门的数据(访问频率高的数据)可以缓存的时间长一些,对于冷门的数据可以缓存的时间短一 些。甚至对于一些特别热门的数据可以设置永不过期。
Redis击穿
缓存击穿,是指一个key非常热点(例如双十一期间进行抢购的商品数据),在不停的扛着大并发,大并发集中对 这一个点进行访问。当