1. 分布式缓存面临比较大的三个问题:
(1)数据一致性: 先写DB还是先写缓存
假设先写数据库,再淘汰缓存:第一步写数据库操作成功,第二步淘汰缓存失败,则会出现DB中是新数据,Cache中是旧数据,数据不一致。
假设先淘汰缓存,再写数据库:第一步淘汰缓存成功,第二步写数据库失败,则只会引发一次Cache miss
所以先淘汰缓存,再写数据库
(2)缓存雪崩:缓存失效,同时访问DB
1. 失效时间均衡分布
2. 使用分布式锁
3. 缓存过期标记+异步刷新
(3)缓存穿透: 查询不存在的数据
1. 对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃
布隆过滤器