简介
本文介绍Redis的缓存击穿,包括:含义、原因、解决方案。
含义
缓存击穿是指一个Key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个Key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个完好无损的桶上凿开了一个洞。
解决方案
1.设置热点数据永远不过期
2.互斥锁
用互斥锁来保证只有一个线程读取数据库并写入缓存,其他线程必须从缓存中读取。
在第一个查询数据的请求上使用一个互斥锁来锁住它,其他的线程拿不到锁就等着。第一个线程查询到了数据后放到缓存然后释放互斥锁,后面的线程获得锁之后,就可以从缓存中获取数据。
请先
!