用redis+php7改造ecshop单品商城支持日百万pv

来源:互联网 发布:12306自动抢票软件 编辑:程序博客网 时间:2024/05/22 12:17

本篇日志是因为作为程序猿的我,拥有的一个商城商品列表页www.adidasi.cn/adidas_xie等请求时间太长。做的升级优化后特意写个日志记录下。

先说下服务器配置:阿里云vps一台,配置为1核(具体主频多大没写)内存1g,带宽3m。


再说下改造前大致情况:重新设计了数据结构将属性和分类都设计成了静态表。但分类页有大量的复合查询(请求一次大概有几百条不等sql查询)。因此请求分类列表时,MySQL直接将服务器资源吃尽。

在此需求场景下怎么办呢?

两种选择:

1优化程序

2花钱升级硬件配置

升级配置不太可能,因为第一个刚创业资金紧张,第二个程序在优化后还能大幅提升效率的情况下直接选后者总感觉心头不爽(原谅我的强迫症)

好吧,构思了几天。想过在改动不大的情况下将数据搬到mongodb,但鉴于mongodb的性能弱于redis最后还是选择了redis。

最后将数据结构设计为扁平式数据结构。

查询属性1=》集合{商品ID1,商品ID2,。。。}

查询属性2=》集合{商品ID7,商品ID9,。。。}

这样我们在做筛选过滤的时候读取用户所选择的查询属性然后做数组融合或者取集处理。就得到了目标商品id数组。再从商品列表里拉取相关商品列表信息(这里可以将常用信息同样存到redis里)效率大大提升!!!

标题取成百万PV虽然有点夸张。但实际也差不了多少(没压测过)。因为做了缓存处理。压测单个页面一点意义都没有。


1 0