Redis - 缓存问题
2019-07-18 / 1 min read
缓存穿透
什么是缓存穿透?
缓存穿透是指查询一个一定不在缓存中存在的key. 由于key不存在,每次都会去查询数据库,如果对于这个key的请求很多的话,可能会把数据库搞垮。
解决方案:
- 布隆过滤器
- 将查询数据库的空结果也缓存起来,设置一个较短的过期时间。
缓存雪崩
什么是缓存雪崩?
对于多个key的查询,全部请求都走数据库了。有两种情况:一种是redis挂掉,别一个情况是一段时间内那些key都失效了。
对于第一种情况要保证redis的的高可性,对于第二种情况可以为key设置不同的随随机过期时间。
缓存数据一致性
- 写数据库也写缓存,保证了数据一致性;但是难保证数据库与redis的事务
- 写数据库,直接删缓存;读缓存发现没有,从数据库读取并保存缓存;带来问题是并发问题。
- 应该根据不同的业务,来处理缓存的生成。