php - 我有个点赞功能的逻辑实现,性能优化,高并发的问题想问

查看:412
本文介绍了php - 我有个点赞功能的逻辑实现,性能优化,高并发的问题想问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

业务场景:假设现在有1000人在同时浏览同一个微博,而且这一千人都将会点赞,为了简单化,我们假设这1000人是按照时间顺序依次点赞的。

点赞控件不可能让用户每点击一次就发送一次ajax请求,一千人同时在线,我们不能保证这一千个用户都不是一些无聊的人。如果他们同时(哪怕不是同时)点着这个控件玩儿,服务器肯定会宕机狗带!那么问题来了,前端方面在原有点赞数字上肯定是加1或者减1。后端方面把点赞的用户id和点赞目标用户的数据库里面储存的点赞用户(平常我们都会看到谁点赞我)进行匹配,如果存在那就减一,不存在那就加一。但是这个时候我们不能强调数据一致性,除非用户刷新,如果强调数据一致性,我点个赞就加125,这个体验就不是很好。所以返回的还是原先用户看到的那个点赞数字加一或者减一,那这样就不可避免的每点击一次都要发送ajax请求了,服务器宕机指日可待。。。

有没有好的解决方案

解决方案

可以上redis,每日点赞存到redis里,用户点赞以及取消点赞操作的就是缓存中的内容,而不是数据库。然后在业务低峰时间(例如0:00) 再将每日最终点赞数写入数据库,这样的话每天只需要对数据库做一次数据写入就解决问题了

这篇关于php - 我有个点赞功能的逻辑实现,性能优化,高并发的问题想问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆