Redis雪崩,击穿,穿透怎么解决

63 阅读1分钟

缓存穿透?

查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库

解决方案:

1,缓存空数据(查询到数据为空,将空数据进行缓存)

优点:简单

缺点:消耗内存,可能会发生不一致的问题

2,布隆过滤器

优点:内存占用较少,没有多余key

缺点:实现复杂,存在误判

image.png

缓存击穿?

热点key设置了过期时间,当热点key过期的时候,正好这个时间点这个key有大量请求过来,大量请求打到数据库

image.png

image.png

解决方案:

1,互斥锁

2,逻辑过期

image.png

image.png

image.png

image.png