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 缓存与数据库数据一致性:

相关文章

  • PHP问题汇总

    php异常级别 redis持久化机制 redis缓存雪崩和缓存穿透 其他redis问题 redis地理位置 mys...

  • Redis总结

    一、数据类型 二、使用场景 二、redis缓存使用总结 三、redis缓存常见问题 四、布隆过滤器的方式解决缓存穿透问题

  • 高并发架构修炼

    redis缓存策略 分布式缓存一致性 redis常见的问题 redis分布式锁 http://ifeve.com/...

  • Redis常见穿透问题、击穿问题、雪崩问题解决方案

    Redis常见穿透问题、击穿问题、雪崩问题解决方案 穿透问题 定义 Redis 缓存穿透指的是大量请求Redis缓...

  • springboot与缓存

    问题一:使用缓存步骤 问题二:常用的缓存注解介绍 问题三:springboot与redis springboot要...

  • 六、Redis 的缓存异常处理 —— 缓存雪崩、缓存击穿、缓存穿

    在实际应用 Redis 过程中,如果将 Redis 作为数据库的缓存,经常会遇到这几个问题:缓存雪崩、缓存击穿、缓...

  • Redis缓存问题

    一、缓存穿透 1.1 缓存穿透是什么 当查询的数据是缓存和数据库都不存在的数据,也就是不是真是的数据时,每次查询都...

  • redis缓存问题

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

  • redis缓存问题

    缓存更新策略 1.lru/lfu/fifo - redis自带,根据maxmemory-policy设置,数据无法...

  • Redis 缓存问题

    Redis 缓存问题 缓存穿透 缓存穿透问题描述 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的...

网友评论

    本文标题:redis缓存问题

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