缓存穿透
缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,这时的用户很可能是攻击者,攻击会导致数据库压力过大。如下面这段代码就存在缓存穿透的问题。
public Integer findPrice(Long id){
//从缓存中查询
Integer sku_price=(Integer)redisTemplate.boundHashOps("sku_price").get(id);
if(sku_price==null){
//缓存中没有,从数据库中查询
Sku sku=skuMapper.selectByPrimaryKey(id);
if(sku!=null){
sku_price=sku.getPrice();
redisTemplate.boundHashOps("sku_price").put(id,sku_price);
}
}
return sku_price;
}