redis缓存问题

作者: springczg | 来源:发表于2019-07-03 15:07 被阅读0次

    1. 缓存雪崩:是指在某一个时间段,缓存集中过期失效或者redis服务器挂了,导致数据全部请求DB。

    比如,设置的数据的过期的时间是1小时,但是一小时之后,这个数据全部过期,导致大量的查询全部走DB.

    解决办法: 

    1 )尽量设置过期的时间不要分布在同一时间,可以加个随机数;

    2 )可以设置分布式锁;

    3 )可以做二级缓存,A1为原始缓存,A2为拷贝缓存,A1失效时,可以访问A2,A1缓存失效时间设置为短期,A2设置为长期;

    缓存穿透:缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。

    解决办法:

    1)接口层增加校验,如用户鉴权校验,id做基础校验,id<=0或者id的位数不是自己创建的位数不是自己定义的长度的拦截,

    2)从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,这样可以防止攻击用户反复用同一个id暴力攻击;

    3)布隆过滤器;简图如下

    3 缓存与数据库数据一致性:

    相关文章

      网友评论

        本文标题:redis缓存问题

        本文链接:https://www.haomeiwen.com/subject/wtbqhctx.html