Redis缓存流程
代码流程
参数传入工具主键ID根据key从缓存中获取工具如果工具不为空,直接返回如果工具为空,进行数据库查询如果从数据库查询出的工具不为空,则放入缓存(设定过期韶光)想象一下这个情形,如果传入的参数为-1,会是怎么样?这个-1,便是一定不存在的工具。就会每次都去查询数据库,而每次查询都是空,每次又都不会进行缓存。假如有恶意攻击,就可以利用这个漏洞,对数据库造成压力,乃至压垮数据库。即便是采取UUID,也是很随意马虎找到一个不存在的KEY,进行攻击。

缓存空值
缓存雪崩
缓存雪崩,是指在某一个韶光段,缓存集中过期失落效。
产生雪崩的缘故原由之一,比如在写本文的时候,立时就要到双十二零点,很快就会迎来一波抢购,这波商品韶光比较集中的放入了缓存,假设缓存一个小时。那么到了凌晨一点钟的时候,这批商品的缓存就都过期了。而对这批商品的访问查询,都落到了数据库上,对付数据库而言,就会产生周期性的压力波峰。
缓存韶光加入suijiyinzi
实在集中过期,倒不是非常致命,比较致命的缓存雪崩,是缓存做事器某个节点宕机或断网。由于自然形成的缓存雪崩,一定是在某个韶光段集中创建缓存,那么那个时候数据库能顶住压力,这个时候,数据库也是可以顶住压力的。无非便是对数据库产生周期性的压力而已。而缓存做事节点的宕机,对数据库做事器造成的压力是不可预知的,很有可能瞬间就把数据库压垮。
缓存击穿
缓存击穿,是指一个key非常热点,在一直的扛着大并发,大并发集中对这一个点进行访问,当这个key在失落效的瞬间,持续的大并发就穿破缓存,直接要求数据库,就像在一个樊篱上凿开了一个洞。
实在,大多数情形下这种爆款很难对数据库做事器造成压垮性的压力。达到这个级别的公司没有几家的。以是,务实主义的
大道至简,mutex key互斥锁至心用不上。
结束语
在盛行的问题面前一定有盛行的办理方案,但有时候,也要根据自己的实际情形酌情处理。大胆设计,说不定你的办理方案就会被盛行呢?
作者:一行代码一首诗
链接:https://www.jianshu.com/p/907ddfd4b457