今天优化了一个用Redis队列异步解决了提交数据反映时间慢点问题 整理下和大家分享下 一是怕自己忘了 二是希望可以帮助到你们 或多或少提供些思想也是好的...
先看下图,在没有优化之前一起提交五套房源的速度是这个样子的
<注 上图是charles的截图 响应时间6.86秒>
第一反应是sql的问题 然后把所有的sql 输出到文本上 发现有查询是带*号的sql语句 还有就是夹在循环里的sql 改掉了里面的循环体和sql 当时的sql如下图
把当时的循环逻辑进行优化 但是发现还没有解决 当时就想是不是在哪里发生了问题 注释掉了一些sql和循环 速度还是那么慢 后来发现每次提交代码时都在发送短信和邮件 当时我的第一想法是把发送的curl设置成已微妙为单位的发送和请求 中途遇到了问题是每次没有执行发送邮件 当时真是一阵草泥马呼啸而过....
脚本执行慢的原因是 每次发送邮件要等返回值!!! 这问题就变得好多了 使用Redis把每次发送邮件请求lpush到Redis队列中 然后在定时脚本rpop消费 这样执行时不用等待邮件是否发送成功 记录相应的日志 问题得到解决 成就感满格...
Redis 写入队列和消费队列的脚本代码 以及日志记录 <上次写的脚本日志利总非常不满意 所以之后都写的多想想 每一步执行都要记录了 谢谢利总>
最后执行速度终于到了185ms 大写的满足