Redis教程

redis缓存常见3个问题

本文主要是介绍redis缓存常见3个问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

redis缓存常见问题

  1. 缓存穿透
    缓存穿透是指查询一个不存的数据,由于缓存中没有,将查询数据库,数据库也没有该记录,出于容错的考虑,并没有将该次查询的null写入缓存。如此将导致这个不存在的数据每次请求都会到数据库中查询,此时缓存的意义丢失,当请求该数据的流量过大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。
    解决方案:空结果也进行缓存,但它的过期时间会很短,最长不超过五分钟。

  2. 缓存雪崩
    缓存雪崩是指在我们设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到数据库,数据库瞬时压力过大造成雪崩。
    解决方案:原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。

  3. 缓存击穿
    缓存击穿是指一些设置有过期时间的key,如果这些key可能会在某个时间点被超高并发地访问,是一种非常“热点”的数据。当这个key过期时,大量请求同时访问该数据,那么这些请求会落到数据库上,从而造成缓存击穿。

【注意】缓存雪崩和缓存击穿的区别

  • 击穿是一个热点key失效

  • 雪崩是很多key集体失效

    解决方案:锁

这篇关于redis缓存常见3个问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!