目前的IO设备远不能满足互联网应用海量的读写请求。于是便出现了缓存,利用内存的高速读写性能来应付海量的查询请求。然而内存资源非常宝贵,将全量数据存储在内存中显然是不切合实际的。因此目前采用内存和IO结合的方式,内存只存储热点数据,而IO设备存储全量数据。
缓存的设计包含很多技巧,设计不当将会导致严重的后果。本文将介绍缓存使用中常见的三大问题,并给出相应的解决方案。
1. 缓存穿透
在大多数互联网应用中,缓存的使用方式如下图所示:
- 当业务系统发起某一个查询请求时,首先判断缓存中是否有该数据;
- 如果缓存中存在,则直接返回数据;
- 如果缓存中不存在,则再查询数据库,然后返回数据。
了解了上述过程后,下面说说缓存穿透。
1.1 什么是缓存穿透?
业务系统要查询的数据根本就存在!当业务系统发起查询时,按照上述流程,首先会前往缓存中查询,由于缓存中不存在,然后再前往数据库中查询。由于该数据压根就不存在,