3-缓存测试

1-缓存常见问题

问题

缓存

DB

缓存穿透

0

0

缓存击穿

缓存雪崩

0

1

数据库缓存一致性

1

0

1

1

2-解决方案

问题

解决方案

缓存穿透

接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;

布隆过滤器;

从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null

缓存击穿

设置热点数据永远不过期。

加互斥锁

缓存雪崩

缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。

如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。

设置热点数据永远不过期。

 

3-缓存一致性解决方案

https://blog.csdn.net/striveb/article/details/95110502

1)先淘汰缓存,再写数据库

  • 在写请求时,先淘汰缓存之前,获取分布式锁。
  • 在读请求时,发现缓存不存在时,获取分布式锁。

2)先写数据库,再更新缓存

  • 写入数据库,
  • 发送带有缓存 KEY 和 VALUE 的事务消息。此时,需要有支持事务消息特性的消息队列,或者我们自己封装消息队列,支持事务消息。
  • 【异步】最后,消费者消费该消息,更新到缓存中。

3) 基于数据库的 binlog 日志 

 

4-缓存测试流程

 

posted @ 2021-06-22 17:19  爱寂寞撒的谎言  阅读(186)  评论(0)    收藏  举报