比如数据库中id都是1,2,3,4等等的数据,通过id=-1去查询,但是数据库中没有这条数据,虽然没有,但是这条数据依然被加入到了redis缓存中去,但是缓存的这条数据利用不上,这种情况就是缓存穿透。
危害:如果黑客通过id=最大值+random进行反复查询 会导致redis最终无法使用 更严重会导致数据库压力太大造成宕机。
定义:客户端查询一个数据库中没有的数据记录导致缓存存在无法利用,称之为缓存穿透,或者叫缓存击穿。
mybatis中cache解决了缓存穿透,将数据库中没有查询到结果也进行缓存,即缓存一条key null的键值对数据。