等)中查询是否存在,如果存在就返回,如果不存在就去数据库中查询并将结果放入缓存。...DB查询结果是否为null,如果为null的话,将标识null的特殊字符放入缓存(设置过期时间5分钟,避免insert有效数据后导致查询长时间为null),记得try...catch缓存操作,保证缓存不可用的情况下...DB查询正常使用
3.对DB中查询出的有效数据进行装配转换并返回结果
- 第一个标红处对DB查询结果进行装配转换成调用方需要的数据(客户端需要什么数据就返回什么数据,尽可能不要原封不懂得将查询的所有字段都返回给调用方...无效查询条件测试
第一次访问,缓存中没有有效数据也没有null数据标识
数据库中没有查到数据,将null数据标识放入缓存并返回null
第二次无效访问,缓存中返回null值标识##,逻辑中识别无效请求直接返回...有效查询条件测试
缓存中没有查到数据,去DB中查询
DB中查到数据,做转换后放入缓存
第二次有效查询,从缓存中查询出有效数据直接返回
总结
至此,我们已经使用缓存存储null值的方式解决了缓存穿透的问题