主页 >> PHP > PHP与Memcache结合浏览量延迟方案

2015/01/11 | 星期日 分类:PHP | 没有评论 标签: , | 作者: | 2,268 views

PHP与Memcache结合浏览量延迟方案

这篇干货,适用中小型网站浏览更新频繁,减少mysql服务器(鸭梨),减少服务器io的一种绝佳方案。

平常在工作,开发中设计或做数据统计的时候,习惯把浏览量放在资源表中,一般小网站做法是访问一次更新一次资源浏览量:比如blog系统,访问blog详情页时,blog浏览量增加1,就会做一次数据update,这样的后果是,频繁更新数据库,造成数据库链接过多 + 服务器IQ读写频繁,网站浏览量稍大点服务器就容易宕机。.seedpaddy.com

看图说话,浏览量更新流程图.seedpaddy.com
view-delay

结合上图,解析下流程图:
1.资源浏览量,比如blog详情页的浏览量 views = mysql(数据表的浏览量) + memcache(浏览量) 每次访客访问blog详情页,浏览量就会+1,使用浏览延迟更新,仅更新memcache中的浏览量,并把浏览量缓存的key hash到array中(这很重要),当memcache中的浏览量达到某一值,比如100时,做一次update mysql数据的浏览量,并即时把memcache的浏览量设置为0。

2.由于资源浏览量部分保存在memcache中,重启memcache,或者其他原因,浏览量会丢失,需要额外开发一个定时任务更新缓存的浏览量到mysql中;

3.故,图中浏览量定时任务(比如凌晨3点)更新memcache缓存到数据库中,这时(第一点hash的key就显得特别重要),定时任务就变成了遍历hash数组,每一个hash 的value就是一组浏览量缓存Key的集合,再遍历这些浏览量的key 获取某资源的浏览量,update到mysql,在更新前及时设置这个浏览量缓存为0,以便新的浏览量更新到缓存不受定时任务影响。

看懂此浏览图,请先阅读文章末尾中文章。.seedpaddy.com

特别是hash数组,与其中奥妙。

额外知识:测试,memcache value可存储多少Key . 用于缓存浏览量更新 结合浏览量,得到 hash 数组。

详情,关于memcacheServer.class.php 类库,相关观念等请参阅:
PHP 链接 Memcache 安装与概念理解
PHP 链接 Memcached 集群封装类库

  • 本文目前尚无任何评论.
    1. 本文目前尚无任何 trackbacks 和 pingbacks.