开发者社区> 问答> 正文

关于Redis的SETNX

这么使用 mutex lock 有什么用啊? setnx 是返回一个值,如果不存在,关键是这个操作怎么知道该 set 什么?这么做的意义是什么?还有一个问题,就是怎么知道即将发生缓存击穿?

图片.png

展开
收起
景凌凯 2020-04-22 18:05:02 1368 0
2 条回答
写回答
取消 提交回答
  • 应该需要程序层面去做控制吧,比如在发现已经失效了并根据一个status标识(可能值有start,loaded等),刚刚缓存击穿时第一个请求过来就去拿数据库数据,并标识为start状态,那么其他的进来看状态是start就自动返回预设的返回信息,直到状态为loaded后再来拿结果

    2020-04-23 12:42:08
    赞同 展开评论 打赏
  • 有点尴尬唉 你要寻找的东西已经被吃掉啦!
    • 考虑到原子操作问题。
    • 对于可能发生缓存击穿的数据,当缓存失效需要从数据库中获取时, 在这步之前使用setnx加锁,这个样子就可以避免数据库瞬时压力过大的问题了。
    • • 用setnx加锁,也会造成请求阻塞,其实这种方案也说不上好,但也是一种办法
    2020-04-22 18:05:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis在唯品会的应用实践——架构演进与功能定制 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载