1:什么是redis穿透?
个人的理解:就是用户请求透过redis去请求mysql服务器,导致mysql压力过载。但一个web服务里,
极容易出现瓶颈的就是mysql(所以才让redis/memcache等去分担mysql 的压力),所以这种问题是万
万要避免的
2:什么是redis血崩?
个人的理解:就是redis服务由于负载过大而宕机,导致mysql的负载过大也宕机,最终整个系统瘫痪
3:什么是redis惊群?
个人的理解:高并发下,由于一个key失效,而导致多个线程去mysql查同一业务数据并存到redis(并发下,
存了多份数据),而一段时间后,多份数据同时失效。导致压力骤增
4:redis穿透如何产生?如何解决?
产生原因:
用户一直请求一个mysql中不存在的数据,由于数据不存在,所以redis一直无法命中。所有的请求就
集中在了mysql。导致压力骤增,最终崩溃
解决方法:
请求一个mysql中不存在的值,往redis中存一个null,并返回空。往后的请求都走redis,不会给
mysql施压
5:redis血崩如何产生?如何解决?
产生原因:
1:高并发下,读写过于频繁
2:同一时间设置的key过多
3:同一时间过期的key过多
解决方法:
1:redis集群,将原来一个人干的工作,分发给多个人干
2:缓存预热
(关闭外网访问,先开启mysql,通过预热脚本将热点数据写入缓存中,启动缓存。开启外网服务)
3:数据不要设置相同的生存时间,不然过期时,redis压力会大