流量较大的论坛,更新帖子浏览数是个头疼的问题,常见的方法是将浏览数写如文件,然后通过cron读取文件然后更新到数据库,也有将浏览数放到memcache里,这里介绍一种利用memcache实现浏览数的方法。
目标:
1、帖子浏览数实时更新
2、减少对数据库的压力
2、memcache挂掉或者其他原因造成帖子浏览数没有更新到数据库的损失减少到最小
原理:
根据tid做键存储帖子浏览数信息, key(tid) => array('浏览数', '最后一次更新到数据库的时间')
每次浏览帖子页时,从memcache里取出帖子对应的浏览数信息,判断最后一次更新数据库的时间是否超过1分钟(根据自己的情况可设置,越小,memcache挂掉带来的损失越小),如果超过则更新下数据库,同时更新这个帖子对应的浏览数最后一次更新数据库的时间。
如果memcache挂掉或者帖子之后都没人浏览,造成数据库未更新的损失最多只是1分钟内的浏览数