缓存击穿:由于缓存热点键到时失效,导致用户直接访问数据库

解决方案:

1.设置缓存永远不过期

2.分布式锁,单体应用可以用互斥锁。原理:首先大量的用户访问redis请求数据库,如果有数据就返回给用户,如果redis里的数据为空的话,就请求数据库,就在请求数据库这一步给它上锁,那么这时候就只有一个线程,能指到这个锁,所以也就只有一个线程能操作数据库,那么这个时候对数据库的压力就非常小,当查询到这个数据之后,就把缓存重新写到redis中去,其他没有抢到锁的线程,让它先睡几毫秒,然后再重新去redis里面去查询。分布式锁实现方式:redis和zookeeper