缓存一致性的问题: 数据库和缓存有可能数据不一致(数据库写操作,缓存可能不一致)
缓存击穿的问题:
什么叫缓存击穿: 高并发查询一个key值,redis不存在数据,高并发涌入数据库.
解决方案:
简单处理方法: redis存储一个短时间的null值
复杂处理办法: redis分布式锁
缓存穿透的问题:
什么叫缓存穿透: 访问了一个不存在的数据,redis没有,数据库没有
解决方案:
处理方法: 布隆过滤器(100%判断不存在),提前将全量数据存放到布隆过滤器 set(影响redis处理数据吞吐量,不是布隆的底层实现原理)
缓存雪崩的问题:
什么叫雪崩: 本来缓存承受的吞吐压力,由于缓存失效,导致数据库承受,造成宕机
原因:1 缓存大量数据同一时间失效
解决方案: 失效时间随机,不让数据同时失效
解决方案: 引入逻辑超时(redis没有超时,提前一个临界点),处理起来非常复杂
原因:2 redis节点宕机
解决方案: redis自带集群高可用结构,由运维开发工程师 维护管理.