redis缓存击穿如何解决和预防?
什么是缓存穿透?
缓存击穿是指缓存中不存在某个特定的key,并且在短时间内有大量的并发请求同时访问该key,由于缓存中没有,导致直接访问数据库,从而造成数据库压力过大,甚至崩溃
如何预防和解决?
- 通过加锁机制,使一个线程可以访问数据库,其他线程阻塞在该线程外(休眠)
- 对未命中的缓存进行特殊处理或者返回默认值
- 通过布鲁过滤器
什么是缓存穿透?
缓存击穿是指缓存中不存在某个特定的key,并且在短时间内有大量的并发请求同时访问该key,由于缓存中没有,导致直接访问数据库,从而造成数据库压力过大,甚至崩溃
如何预防和解决?
- 通过加锁机制,使一个线程可以访问数据库,其他线程阻塞在该线程外(休眠)
- 对未命中的缓存进行特殊处理或者返回默认值
- 通过布鲁过滤器