首页 > 开发 > PHP > 正文

php操作memcache缓存方法分享

2024-05-04 23:35:52
字体:
来源:转载
供稿:网友

一般来说,如果并发量不大的情况,使不使用缓存技术并没有什么影响,但如果高并发的情况,使用缓存技术就显得很重要了,可以很好的减轻数据库和服务器的压力,当然解决高并发的技术有很多,这里只是以缓存的角度来说明使用memcache的便捷性和方便性,

使用memcache的前提是需要在服务端先配置好memcahche的环境!确认memcahce可以正常连接之后就可以在程序使用了!

 

 
  1. <?php 
  2. /** 
  3. * Memcache缓存操作 
  4. * @author hxm 
  5. * @version 1.0 
  6. * @since 2015.05.04 
  7. */ 
  8. class MCache extends Object implements CacheFace 
  9. private $mem = null; //Mem对象 
  10.  
  11. private $sId = 1; //servier服务ID 
  12.  
  13. /** 
  14. * 初始化Memcache 
  15. * 
  16. * @return Object 
  17. */ 
  18. public function __construct() 
  19. if ( !class_exists('Memcache') ) 
  20. throw new QException('PHP extension does not exist: Memcache'); 
  21. $this->mem = new Memcache(); 
  22.  
  23. /** 
  24. * 链接memcahce服务 
  25. * 
  26. * @access private 
  27. * @param string $key 关键字 
  28. * @param string $value 缓存内容 
  29. * @return array 
  30. */ 
  31. private function connect( $sid ) 
  32. $file = $this->CacheFile(); 
  33. require $file
  34. if(! isset($cache) ) 
  35. throw new QException('缓存配置文件不存在'.$file); 
  36. $server = $cache[$this->cacheId]; 
  37. $sid = isset($sid) == 0 ? $this->sId : $sid;//memcache服务选择 
  38. if ( ! $server[$sid]) 
  39. throw new QException('当前操作的缓存服务器配置文件不存在'); 
  40. $host = $server[$sid]['host']; 
  41. $port = $server[$sid]['port']; 
  42. try { 
  43. $this->mem->connect( $host , $port ); 
  44. } catch (Exception $e) { 
  45. exit('memecache连接失败,错误信息:'$e->getMessage()); 
  46.  
  47. /** 
  48. * 写入缓存 
  49. * 
  50. * @access private 
  51. * @param string $key 关键字 
  52. * @param string $value 缓存内容 
  53. * @return array 
  54. */ 
  55. public function set( $key , $value , $sid , $expire = 0) 
  56. $data = $this->get($key , $sid); //如果已经存在key值 
  57. if$data )  
  58. return $this->mem->set( $key , $value ,MEMCACHE_COMPRESSED , $expire); 
  59. else { 
  60. return $this->mem->add( $key , $value ,MEMCACHE_COMPRESSED , $expire); 
  61.  
  62. /** 
  63. * 读取缓存 
  64. * 
  65. * @access private 
  66. * @param string $key 关键字 
  67. * @param int $sid 选择第几台memcache服务器 
  68. * @return array 
  69. */ 
  70. public function get( $key , $sid
  71. $this->connect( $sid ); 
  72. return $this->mem->get($key); 
  73.  
  74. /** 
  75. * 清洗(删除)已经存储的所有的元素 
  76. * 
  77. * @access private 
  78. * @return array 
  79. */ 
  80. public function flush() 
  81. $this->connect(); 
  82. return $this->mem->flush(); 
  83. /** 
  84. * 删除缓存 
  85. * 
  86. * @access private 
  87. * @param string $key 关键字 
  88. * @param int $sid 选择第几台memcache服务器 
  89. * @return array 
  90. */ 
  91. public function remove( $key , $sid
  92. $this->connect(); 
  93. return $this->mem->delete($key); 
  94.  
  95. /** 
  96. * 析构函数 
  97. * 最后关闭memcache 
  98. */ 
  99. public function __destruct() 
  100. /*if(! $this->mem) 
  101. { 
  102. $this->mem->close(); 
  103. }*/ 

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表