Redis缓存知识问题

Redis缓存知识问题

----Redis缓存知识问题//---- http://


Redis缓存知识问题

缓存穿透:

条件:缓存穿透是指查询一个一定不存在的数据 , 由于缓存是不命中时被动写的 , 并且出于容错考虑 , 如果从存储层查不到数据则不写入缓存 , 这将导致这个不存在的数据每次请求都要到存储层去查询 , 失去了缓存的意义 。 在流量大时 , 可能DB就挂掉了 , 要是有人利用不存在的key频繁攻击我们的应用 , 这就是漏洞 。

解决方案:

有很多种方法可以有效地解决缓存穿透问题 , 最常见的则是采用布隆过滤器 , 将所有可能存在的数据哈希到一个足够大的bitmap中 , 一个一定不存在的数据会被 这个bitmap拦截掉 , 从而避免了对底层存储系统的查询压力 。 另外也有一个更为简单粗暴的方法(我们采用的就是这种) , 如果一个查询返回的数据为空(不管是数 据不存在 , 还是系统故障) , 我们仍然把这个空结果进行缓存 , 但它的过期时间会很短 , 最长不超过五分钟 。

推荐阅读