实际用里面,我们会在程序和数据库之间增加一个缓存层。一方面呢是为了提数据的检索效率,提升程序的性能,另外一方面,是为了缓解数据库的并发压力。
缓存击穿表示请求因为某些原因全部打到了数据库,缓存并没有起到流量缓冲的作用。
有两种情况会导致缓存击穿
redis
里面,保存的热点key
在缓存过期的瞬间,有大量的请求进来,导致请求全部打到数据库里。key
的一个请求,由于访问的key
对应的数据本身也不存在,所以每一次必然都会穿透到数据库里面,导致缓存成了摆设。综上,当redis
承担了流量缓冲功能的时候,就需要考虑redis
失效导致并发压力过大对于后端存储设备造成冲击的问题。
解决方案: