关注
来讲点原有的改造吧。
黑马点评有旧有的点赞系统,它是通过redis的Zset集合简单实现的。每次更新的时候更新数据库。但如果在高并发下,每一个用户点赞就要更新一次数据库,数据库的压力会非常大,崩掉也很正常。首先用户点赞后,采用redis自带的原子命令将点赞数更新,之后更新数据库。并发情况下更新数据库需要消息队列异步更新,采用批量消息执行和批量插入,将多次点赞执行消息一次插入执行,并做好补偿机制,保障消息任务执行失败的场景。
而在查询点赞排行榜的时候,若缓存失效了,此时查询数据库更新缓存。正常流程是先查库再重建缓存,但要考虑到高并发的影响防止将数据库打崩。第一步当前请求发现缓存失效,需要上分布式锁,要进行双重锁校验,之后推荐发送异步消息至消息队列进行重建缓存的逻辑,不建议当前请求重构缓存。之后当前请求可以等待正常的少量时间,返回更新后缓存中的值。若缓存迟迟未建立,推荐返回默认页面。
查看原帖
4 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的求职总结 #
34128次浏览 549人参与
# 国企vs私企,怎么选? #
21294次浏览 172人参与
# 一人一个landing小技巧 #
40027次浏览 715人参与
# 怎么防止在试用期被辞退 #
118819次浏览 891人参与
# 辞职之后最想做的一件事 #
12331次浏览 176人参与
# 选offer应该考虑哪些因素 #
24246次浏览 339人参与
# 毕业季,给职场新人一些建议 #
32803次浏览 530人参与
# 硬件开发岗知多少 #
10432次浏览 111人参与
# 薪资一样,你会选择去大厂还是小公司 #
17242次浏览 105人参与
# 机械专业只有考研才有出路吗 #
102236次浏览 857人参与
# 小米硬件提前批进度交流 #
165147次浏览 1516人参与
# 字节跳动工作体验 #
394597次浏览 4315人参与
# 校招第一份工作你干了多久? #
68867次浏览 338人参与
# 为了秋招你都做了哪些准备? #
11412次浏览 173人参与
# 你想吐槽公司的哪些规定 #
18403次浏览 71人参与
# 晒一晒你收到的礼盒 #
63335次浏览 378人参与
# 机械人值得去的国央企 #
59910次浏览 408人参与
# 你见过最离谱的招聘要求是什么? #
189076次浏览 1405人参与
# bilibili求职进展汇总 #
60206次浏览 584人参与
# 我的工作日记 #
101190次浏览 1281人参与