redis使用中的问题

热key问题

问题描述:如果50万的QPS访问同一个key怎么处理?

 

缓存穿透

问题描述:访问不存在的key,导致每次都去DB查找,从而失去了缓存的意义,也加大了DB的压力。

造成的问题:1、失去了缓存的意义 2、访问这些key频次高的话,会加大DB压力,甚至打崩DB。

解决方案

1、使用布隆过滤器:将所有存在的key哈希到一个足够大的bitmap中。一个不存在的key一定能被挡住,但如果结果告诉程序某个key存在,并不一定存在(因为存在hash碰撞)。

2、回填空值到缓存。

 

缓存击穿

问题描述:由于设置了过期时间,如果在同一时间内一个key(热key)失效,如果某些时间内被高频词访问,那么造成缓存击穿。(缓存里没有,DB里有)

造成的问题:对DB压力过大。

 解决方案:对key加锁,先加锁,然后在读mysql,这样可防止同意时刻大量读请求到达mysql。

 

缓存雪崩

问题描述:由于设置相同的过期时间,导致同一时间内大量的key失效。

造成的问题:DB压力过大。打崩DB。

解决方案:设置过期时间时随机配置过期时间。

 

posted @ 2020-04-10 00:13  guhowo  阅读(162)  评论(0编辑  收藏  举报