php与memcache结合做部分重页面做缓存处理

需求和现状

我们的平台(php网站)由于业务日益负载,导致部分页面承载着很重的数据库查询压力,例如首页涉及很多的联表查询,业务详情页涉及一些鉴权和多表查询,我称之为“重页面”,为了提高查询速度,我决定使用业务缓存方法来处理一层。

解决方法

平台的后端返回的都是json串,所以将json串作为value,前缀加页面标识(例如服务id等)作为key,存储json串。第一次请求时候做set动作,有效期为1小时,这一小时内均get该值。
部分代码:

$mclient = Sap_Common_MClient::getInstance();
$rs = $mclient->get($key);
// 有缓存的话先从缓存中取
if ($rs !== false){
    // echo "111111";
    $serviceDetail = $rs;
    //清理昨天的缓存
    $yesterdayDate = date('Y-m-d',time()-Sap_Common_Constants::TIME_DAY_DURATION);
    $key_yesterday = 'serviceDetail_'.$yesterdayDate;
    $rs_yesterday = $mclient->delete($key);
} else {
    // echo "222222";
    $serviceDetail = $dataServiceOper->queryServiceDetailById($serviceId, $uid);
    $rsMemcached = $serviceDetail;
    $expireTime = 3600;

    $mclient->set($key,$rsMemcached,$expireTime);
}

注意点

  • 变更频率很高并且实时性要求较强的数据(例如发出一条评论),别这么缓存,例如访问量、评论等等,最好能单拉接口让前端获取,或者单独请求,与缓存json做拼接。
  • 变更频率不高的数据(可能要求实时性),需要在变更动作作出时候,清理缓存,例如一些详情内容变更、首页产品位排序变更等等,可以通过清楚缓存,使得变更立即生效。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值