当前位置:首页 > PHP教程 > php类库 > 列表

PHP内存缓存Memcached类实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-03 13:56:26 浏览: 评论:0 

这篇文章主要介绍了PHP内存缓存Memcached类,以实例形式分析了PHP内存缓存Memcached的实现方法,是php操作memcached的典型应用,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了PHP内存缓存Memcached类。分享给大家供大家参考。

具体实现方法如下:

  1. <?PHP 
  2. class MemcacheModel { 
  3. private $mc = null; 
  4. /** 
  5. * 构造方法,用于添加服务器并创建memcahced对象 
  6. */ 
  7. function __construct(){ 
  8. $params = func_get_args(); 
  9. $mc = new Memcache; 
  10. //如果有多个memcache服务器 
  11. ifcount($params) > 1){ 
  12. foreach ($params as $v){ 
  13. call_user_func_array(array($mc'addServer'), $v); 
  14. //如果只有一个memcache服务器 
  15. else { 
  16. call_user_func_array(array($mc'addServer'), $params[0]); 
  17. $this->mc=$mc
  18. /** 
  19. * 获取memcached对象 
  20. * @return object memcached对象 
  21. */ 
  22. function getMem(){ 
  23. return $this->mc; 
  24. /** 
  25. * 检查mem是否连接成功 
  26. * @return bool 连接成功返回true,否则返回false 
  27. */ 
  28. function mem_connect_error(){ 
  29. $stats=$this->mc->getStats(); 
  30. if(emptyempty($stats)){ 
  31. return false; 
  32. }else
  33. return true; 
  34.  
  35. private function addKey($tabName$key){ 
  36. $keys=$this->mc->get($tabName); 
  37. if(emptyempty($keys)){ 
  38. $keys=array(); 
  39. //如果key不存在,就添加一个 
  40. if(!in_array($key$keys)) { 
  41. $keys[]=$key;  //将新的key添加到本表的keys中 
  42. $this->mc->set($tabName$keys, MEMCACHE_COMPRESSED, 0); 
  43. return true;   //不存在返回true 
  44. }else
  45. return false;  //存在返回false 
  46. /** 
  47. * 向memcache中添加数据 
  48. * @param string $tabName 需要缓存数据表的表名 
  49. * @param string $sql 使用sql作为memcache的key 
  50. * @param mixed $data 需要缓存的数据 
  51. */ 
  52. function addCache($tabName$sql$data){ 
  53. $key=md5($sql); 
  54. //如果不存在 
  55. if($this->addKey($tabName$key)){ 
  56. $this->mc->set($key$data, MEMCACHE_COMPRESSED, 0); 
  57. /** 
  58. * 获取memcahce中保存的数据 
  59. * @param string $sql 使用SQL的key 
  60. * @return mixed 返回缓存中的数据 
  61. */ 
  62. function getCache($sql){ 
  63. $key=md5($sql); 
  64. return $this->mc->get($key); 
  65.  
  66. /** 
  67. * 删除和同一个表相关的所有缓存 
  68. * @param string $tabName 数据表的表名 
  69. */  
  70. function delCache($tabName){ 
  71. $keys=$this->mc->get($tabName); 
  72. //删除同一个表的所有缓存 
  73. if(!emptyempty($keys)){ 
  74. foreach($keys as $key){ 
  75. $this->mc->delete($key, 0); //0 表示立刻删除 
  76. //删除表的所有sql的key 
  77. $this->mc->delete($tabName, 0);  
  78. /** 
  79. * 删除单独一个语句的缓存 
  80. * @param string $sql 执行的SQL语句 
  81. */ 
  82. function delone($sql){ 
  83. $key=md5($sql);//www.phpfensi.com 
  84. $this->mc->delete($key, 0); //0 表示立刻删除 
  85. ?> 

希望本文所述对大家的PHP程序设计有所帮助。

Tags: PHP内存缓存 Memcached

分享到:

相关文章