PHP支持组操作的Memcache类(域操作)
来源:振中的技术记事本 责任编辑:栏目编辑 发表时间:2013-07-01 22:57 点击:次
Memcache是PHP开发中较常用到的缓存方法,在高并发的系统中是必不可少的组成部分。
在实际开发中,Memcache存在一个比较不尽人意的问题,就是Memcache不能支持对key进行的组操作。
组操作,也可以称为域操作,比如说某个文章系统,在前台部分使用Memcache缓存了列表页数据、文章详细页数据,两种数据的量都比较多。那么,当后台发布了一篇文章的时候,列表页就应该需要更新到最新的列表——可能涉及到许多个列表页。当然,对文章详细页来说,它是不需要更新的。
好的,这个时候我们就需要删除原有缓存,让程序可以自动更新列表页数据。但是使用Memcache的flush函数有个问题,就是它会清空全部的数据,包括列表页和文章页的数据,在大并发的条件下,全部缓存删除后重建缓存的时候,将会有非常高的负载产生。
另外,还会有情况就是有些你不愿意删除的缓存变量,也会丢失了,比如说程序的配置,数据库为了提速而存到缓存的表结构等。
所以我们需要一个支持组操作的缓存机制,我们就可以把列表页设置成一个组,文章页数据是另外一个组,程序配置又是另外一个组等等。当需要重建列表页的时候,只需要删除列表页这个组里面全部的数据,而不会影响到别的组的数据。
测试了几种方案,还是以下的方案最为理想和高速,我们先看代码,再说原理:
- <?php
- class MyCache
- {
- private $mmc = null;
- private $group = null;
- private $version = 1;
- function __construct($group){
- if(!class_exists('mmcache')){
- $this->mmc = false;
- return;
- }
- $this->mmc = new memcache();
- $this->mmc->addServer('192.168.1.5', 11211);
- $this->mmc->addServer('192.168.1.6', 11211);
- $this->group = $group;
- $this->version = $this->mmc->get('version_'.$group);
- }
- function
相关新闻>>
- 发表评论
-
- 最新评论 更多>>