面试中因吹了Redis的牛从而等通知之缓存穿透、缓存击穿、缓存雪崩
Redis之缓穿透 缓存穿透:用户发起请求访问Redis缓存,缓存中没有数据然后去访问数据库,结果数据库也没有这个数据,也就是说请求最终都会到数据库,从而可能压垮数据库。例子:用一个数据库中ID不存在的用户一直不停的 发送请求,如果有网络黑客利用此漏洞进行攻击数据库可能就会直接崩掉;
解决方案
布隆过滤器:将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力
存储层不命中后,即使返回的空对象也将其缓存起来,同时会设置一个过期时间,之后再访问这个数据将会从缓存中获取,保护了后端数据源; 12345678910111213141516171819202122//伪代码public object GetProductListNew() { int cacheTime = 30; String cacheKey = "product_list"; //缓存标记 Strin ...