请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

缓存击穿的问题?

老师你好:引用慕友的问题:“在getCachedCoupons这个接口中,通过userid和status向Redis查询优惠券数据,如果查询结果为空,则向Redis缓存中写入一条-1的数据,为什么要这样做呢,按我的理解从缓存中没查到数据不是应该再去查一次MySQL吗,如果MySQL中有数据就写进Redis缓存,如果MySQL中也没有数据才向缓存中写一条-1的数据。因为第一次查询的时候缓存里面肯定是没有数据的,如果因此就直接向缓存中写入-1的数据,那之后再查缓存就能查到-1的数据,就不会再去查数据库了,那这样岂不是永远查不到真实的数据了"跟慕友一样的疑问。
咱这里是 保存空的优惠券列表到缓存中,设置一个无意义的值,

用BloomFilter过滤器 是不是好一些?
先判断元素是否存在,在将数据库的数据添加到布隆过滤器中。
具体还没实现过

正在回答

1回答

同学你好:

    关于缓存击穿的实现,我这里的实现是:

    (1)先去查询缓存,如果缓存为空,则去查询数据库;

    (2)如果数据库中也不存在数据,则写入 -1 数据到缓存中

    所以,你说的“幕友”,其实也是理解错误。

    关于你说的 BloomFilter,它的使用场景更为局限,可以查查资料,看看它是怎么使用的,我们这里的场景是不适用的。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!

2 回复 有任何疑惑可以回复我~
  • 提问者 慕用3599920 #1
    非常感谢老师,现在一来就明白了,当时跟他一样的疑惑,理解错了。
    回复 有任何疑惑可以回复我~ 2020-06-09 00:27:24
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号