1、redis穿透:当访问的数据在缓存中不存在,且查询数据库之后也不存在,就会导致系统每次都要访问到数据库,缓存没有效果
解决方案:
增加空缓存:访问没有的数据在redis中也创建缓存
布隆过滤器:在访问缓存之前,使用布隆过滤器判断数据是否可能存在,如果不存在,则直接返回,避免查询数据库
2、redis击穿:一个热点缓存数据设置的失效时间到缓存重新创建时间内有大量请求,会直接访问数据库
解决方案:缓存设置永久有效
3、redis雪崩:大量缓存无法使用(比如缓存失效)或者宕机时导致大量请求直接访问数据库
解决方案:
设置缓存永久有效,集群部署,当redis宕机时立即可以有替代机器访问
在访问数据的操作中加锁可以同时解决redis的三个问题,但并发量会下降