php和redis实现文章点赞,php redis做mysql的缓存,怎么异步redis同步到mysql数据库?

用户投稿 133 0

关于“php和redis”的问题,小编就整理了【2】个相关介绍“php和redis”的解答:

php redis做mysql的缓存,怎么异步redis同步到mysql数据库?

正常情况下是没有问题的,

但是有人用恶意脚本进行刷奖,也就是同一个人发起大量请求,1秒可能一两百的请求甚至更多,而且不只一个人刷奖。

问题出在1这一步

举个例子,假设每人只能抽一次奖,因为请求太快,同一人的a,b两个请求几乎同时来,a走完抽奖逻辑了,并且在抽奖表中插入记录的过程时,因为mysql的性能的问题,b去走1这一步是读不到表中的记录的,因为a的插入根本没有完成。所以b请求会再走一次抽奖逻辑。造成同一人抽奖两次,然后再插入抽奖表。

我关心的是能否a插入抽奖表的瞬间,b就能判断出抽奖表有数据。

所以我觉得问题是mysql写入的不够快,读取的不够快,所以我要采用redis做一层快速缓存。

我们做的抽奖是单一奖品百分之百中奖,只限制奖品数量,所以必须保证每人只能抽一次,而且尽量在程序层面去解决。

redis可以代替实时数据库吗?

要看你怎么使用这些数据了,假如你采集了之后,只是缓存着,然后由界面从redis拉去实时数据去显示,那么用redis问题也不大。单机redis每秒钟写入50万采样数据应该是没问题的。

但实时数据库远不止数据缓存这么简单,假如你需要采样数据进行二次计算(比如把管道内热水流量换算成热能流量)、按时间顺序存为历史数据(如有需要你可以从实时数据库中查询某个测点最近一周、一个月甚至一年的历史数据),那么你就必须用实时数据库。

但实时数据库太贵了 ,最近几年兴起的tsdb也是你可以考虑的选项。用redis存实时数据,用tsdb存历史数据,性价比挺高的

到此,以上就是小编对于“php和redis”的问题就介绍到这了,希望介绍关于“php和redis”的【2】点解答对大家有用。

抱歉,评论功能暂时关闭!