php并发性能(PHP高并发高负载下的3种实战场景解决方法)

wufei123 发布于 2024-01-05 阅读(258)

php教程 百度网盘

前言: 在实际开发项目中,产品一旦推广开来,总能遇到一些小问题比如某个接口突然就请求崩掉了,某个提交接口明明做了限制为什么就多出了好多重复的记录还有是某个记录超过限制进行修改了,以源码下就以这几个小问题总结一下平时采取的解决方法。

场景:1. 缓存失效场景,就比如某个接口做了数据缓存,缓存过期导致突然某个时刻大量请求直接读数据库解决方法设置redis缓存回调事件,订阅失效频道所以这个源码也可以用来处理某些业务场景到期处理方式2. 接口幂等性场景,就比如注册接口,通过手机号查询是否存在记录。

但有时出现网络延迟用户连点等情况,会出现数据库出现几条一样的用户数据记录3. 商品库存超卖场景,源码比如某个活动商品下单,多个用户同时下一个商品的订单,从而导致库存超卖的现象解决方法可以使用乐观锁或者悲观锁解决此问题。

场景一,缓存失效回调1. 设置Redis回调事件方法(1). 打开Redis客户终源码端,输入命令非持久性的回调事件设置 config set notify-keyspace-events Ex(2). windows平台打开Redis安装目录中找到"。

redis.w源码indows-service.conf",然后打开编辑找到notify-keyspace-events那一行,去掉"#",改为notify-keyspace-events “Ex"。

(3). 其中Re源码dis还可以设置订阅键名的回调,比如订阅某个键名的del操作等,可以在conf中设置不同的,方法网上也有的2. 订阅redis某个库的键失效的频道名,可以在命令测试,也可以通过PHP代码订阅然后cli源码环境下运行脚本。

命令: subscribe __keyevent@0__:expired3. 重新打开一个新的redis客户终端输入一个带有效期的键值对,如下(键名test_key_源码name,时间30s, 值ceshi)命令:

setextest_key_name 30 ceshi4. 查看键失效回调订阅的命令窗口是否出现失效的键名。

5. 代码实现键名的失效事件订阅

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

大众 新闻2125