缓存击穿的问题?
来源:9-1 保存无效的优惠劵数据到缓存中

慕用3599920
2020-06-09
老师你好:引用慕友的问题:“在getCachedCoupons这个接口中,通过userid和status向Redis查询优惠券数据,如果查询结果为空,则向Redis缓存中写入一条-1的数据,为什么要这样做呢,按我的理解从缓存中没查到数据不是应该再去查一次MySQL吗,如果MySQL中有数据就写进Redis缓存,如果MySQL中也没有数据才向缓存中写一条-1的数据。因为第一次查询的时候缓存里面肯定是没有数据的,如果因此就直接向缓存中写入-1的数据,那之后再查缓存就能查到-1的数据,就不会再去查数据库了,那这样岂不是永远查不到真实的数据了"跟慕友一样的疑问。
咱这里是 保存空的优惠券列表到缓存中,设置一个无意义的值,
用BloomFilter过滤器 是不是好一些?
先判断元素是否存在,在将数据库的数据添加到布隆过滤器中。
具体还没实现过
写回答
1回答
-
同学你好:
关于缓存击穿的实现,我这里的实现是:
(1)先去查询缓存,如果缓存为空,则去查询数据库;
(2)如果数据库中也不存在数据,则写入 -1 数据到缓存中
所以,你说的“幕友”,其实也是理解错误。
关于你说的 BloomFilter,它的使用场景更为局限,可以查查资料,看看它是怎么使用的,我们这里的场景是不适用的。
欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!
212020-06-09
相似问题