关注
来讲点原有的改造吧。
黑马点评有旧有的点赞系统,它是通过redis的Zset集合简单实现的。每次更新的时候更新数据库。但如果在高并发下,每一个用户点赞就要更新一次数据库,数据库的压力会非常大,崩掉也很正常。首先用户点赞后,采用redis自带的原子命令将点赞数更新,之后更新数据库。并发情况下更新数据库需要消息队列异步更新,采用批量消息执行和批量插入,将多次点赞执行消息一次插入执行,并做好补偿机制,保障消息任务执行失败的场景。
而在查询点赞排行榜的时候,若缓存失效了,此时查询数据库更新缓存。正常流程是先查库再重建缓存,但要考虑到高并发的影响防止将数据库打崩。第一步当前请求发现缓存失效,需要上分布式锁,要进行双重锁校验,之后推荐发送异步消息至消息队列进行重建缓存的逻辑,不建议当前请求重构缓存。之后当前请求可以等待正常的少量时间,返回更新后缓存中的值。若缓存迟迟未建立,推荐返回默认页面。
查看原帖
10 评论
相关推荐
12-04 15:46
门头沟学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
125010次浏览 2095人参与
# 实习简历求拷打 #
17685次浏览 206人参与
# 作业帮求职进展汇总 #
84283次浏览 555人参与
# 秋招被挂春招仍然能投的公司 #
8107次浏览 109人参与
# 实习要如何选择和准备? #
128604次浏览 1486人参与
# 外包能不能当跳板? #
54358次浏览 256人参与
# 诺瓦星云求职进展汇总 #
233602次浏览 1736人参与
# mt对你说过最有启发的一句话 #
39652次浏览 454人参与
# 公司情报交流地 #
126784次浏览 1227人参与
# 为了找工作你花了哪些钱? #
74938次浏览 361人参与
# 你觉得机械有必要实习吗 #
69883次浏览 485人参与
# 投格力的你,拿到offer了吗? #
153674次浏览 823人参与
# 一起聊美团 #
307827次浏览 1767人参与
# 什么是优秀的实习经历 #
9772次浏览 227人参与
# 摸鱼被leader发现了怎么办 #
104601次浏览 662人参与
# 京东开奖 #
632203次浏览 3180人参与
# 秋招特别不鸣谢 #
16875次浏览 187人参与
# 考研失败就一定是坏事吗? #
202981次浏览 1392人参与
# 选实习,你更看重哪方面? #
15647次浏览 231人参与
# 安克创新求职进展汇总 #
62522次浏览 541人参与
