欢迎来到天天文库
浏览记录
ID:12552386
大小:42.00 KB
页数:4页
时间:2018-07-17
《php支持组操作的memcache类》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、PHP支持组操作的Memcache类(域操作)Memcache是PHP开发中较常用到的缓存方法,在高并发的系统中是必不可少的组成部分。在实际开发中,Memcache存在一个比较不尽人意的问题,就是Memcache不能支持对key进行的组操作。 组操作,也可以称为域操作,比如说某个文章系统,在前台部分使用Memcache缓存了列表页数据、文章详细页数据,两种数据的量都比较多。那么,当后台发布了一篇文章的时候,列表页就应该需要更新到最新的列表——可能涉及到许多个列表页。当然,对文章详细页来说,它是不需要更新的。 好的,这个时候我们就需要删除原有缓存,让程序可以自动更新列表页
2、数据。但是使用Memcache的flush函数有个问题,就是它会清空全部的数据,包括列表页和文章页的数据,在大并发的条件下,全部缓存删除后重建缓存的时候,将会有非常高的负载产生。 另外,还会有情况就是有些你不愿意删除的缓存变量,也会丢失了,比如说程序的配置,数据库为了提速而存到缓存的表结构等。 所以我们需要一个支持组操作的缓存机制,我们就可以把列表页设置成一个组,文章页数据是另外一个组,程序配置又是另外一个组等等。当需要重建列表页的时候,只需要删除列表页这个组里面全部的数据,而不会影响到别的组的数据。 测试了几种方案,还是以下的方案最为理想和高速,我们先看代码,再说原理
3、: 1.mmc = false; 10. return; 1. } 2. $this->mmc = new m
4、emcache(); 3. $this->mmc->addServer('192.168.1.5', 11211); 4. $this->mmc->addServer('192.168.1.6', 11211); 5. $this->group = $group; 6. $this->version = $this->mmc->get('version_'.$group); 7. } 8. function set($key, $var, $expire=3600){ 9. if(!$th
5、is->mmc)return; 10. return $this->mmc->set($this->group.'_'.$this->version.'_'.$key, $var, $expire); 11. } 12. function get($key){ 13. if(!$this->mmc)return; 14. return $this->mmc->get($this->group.'_'.$this->version.'_'.$key); 15. } 16. function incr($ke
6、y, $value=1){ 17. if(!$this->mmc)return; 18. return $this->mmc->increment($this->group.'_'.$this->version.'_'.$key, $value); 19. } 20. function decr($key, $value=1){ 21. if(!$this->mmc)return; 22. return $this->mmc->decrement($this->group.'_'.$this->vers
7、ion.'_'.$key, $value); 23. } 24. function delete($key){ 25. if(!$this->mmc)return; 26. return $this->mmc->delete($this->group.'_'.$this->version.'_'.$key); 27. } 28. function flush(){ 29. if(!$this->mmc)return; 30. ++$this->version;
此文档下载收益归作者所有