缓存击穿

血红的双手。 提交于 2021-02-12 08:26:08

概念

缓存的key过期,导致查询该key的大量请求打到数据库上,导致数据库压力增大。

解决方案

一、单实例场景下应用内加锁

对于当应用的场景,只有一个实例,只需要在应用内对查询数据库的操作加锁,保证同一时刻只有一个线程能够进入到该代码块中,这样可以将大并发的场景在应用内控制变成串行访问,减轻对数据存储层的压力,进入该代码块的线程查询完db后将数据写入到缓存中,后续的其他线程再查询缓存就有数据,不需要再查询db了。

二、分布式场景下,使用分布式锁

分布式锁,其实就是将单实例应用内的锁,转换成多应用共享锁,实现的方案网上也很多,通过zk,redis都能实现,我们团队中目前是使用redis来实现分布式锁。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!