目前涉及到大并发访问时,一般我们会使用Redis之类的缓存服务,以提高访问效率,降低对数据库的压力
正常的使用场景为
1、请求到来->访问Redis->有值拿到值返回,
2、请求到来->访问Redis->无值->查询数据库->有值更新redis
3、请求到来->访问Redis->无值->查询数据库->无值空返回
当redis无值、数据库也无值的时候,并发量大的时候,会出现大量请求的压力压到数据库,导致数据库响应变慢甚至崩溃,我们称之为缓存击穿
目前我项目组采用的方案为
请求到来->访问Redis->无值->查询数据库->无值->redis插入空对象 设置缓存时间为5分钟,以避免对数据库的压力