PHP中Memcache操作类使用方法

  1. <?php
  2. /* author:凹凸曼(lyc)
  3. /* email: jar-c@163.com
  4. /* 内存缓存管理
  5. */
  6. class Yc_Memcache{
  7. private $memcache=null;
  8. public function __construct(){
  9. }
  10. /**
  11. * 连接数据库
  12. *
  13. * @param mixed $host
  14. * @param mixed $port
  15. * @param mixed $timeout
  16. */
  17. public function connect($host,$port=11211,$timeout=1){
  18. if(!function_exists(memcache_connect)){ return FALSE;}
  19. $this->memcache=@memcache_connect($host,$port,$timeout);
  20. if(emptyempty($this->memcache)){
  21. return FALSE;
  22. }else{
  23. return TRUE;
  24. }
  25. }
  26. /**
  27. * 存放值
  28. *
  29. * @param mixed $key
  30. * @param mixed $var
  31. * @param mixed $flag 默认为0不压缩 压缩状态填写:MEMCACHE_COMPRESSED
  32. * @param mixed $expire 默认缓存时间(单位秒)
  33. */
  34. public function set($key,$var,$flag=0,$expire=10){
  35. $f=@memcache_set($this->memcache,$key,$var,$flag,$expire);
  36. if(emptyempty($f)){
  37. return FALSE;
  38. }else{
  39. return TRUE;
  40. }
  41. }
  42. /**
  43. * 取出对应的key的value
  44. *
  45. * @param mixed $key
  46. * @param mixed $flags
  47. * $flags 如果此值为1表示经过序列化,
  48. * 但未经过压缩,2表明压缩而未序列化,
  49. * 3表明压缩并且序列化,0表明未经过压缩和序列化
  50. */
  51. public function get($key,$flags=0){
  52. $val=@memcache_get($this->memcache,$key,$flags);
  53. return $val;
  54. }
  55. /**
  56. * 删除缓存的key
  57. *
  58. * @param mixed $key
  59. * @param mixed $timeout
  60. */
  61. public function delete($key,$timeout=1){
  62. $flag=@memcache_delete($this->memcache,$key,$timeout);
  63. return $flag;
  64. }
  65. /**
  66. * 刷新缓存但不释放内存空间
  67. *
  68. */
  69. public function flush(){
  70. memcache_flush($this->memcache);
  71. }
  72. /**
  73. * 关闭内存连接
  74. *
  75. */
  76. public function close(){
  77. memcache_close($this->memcache);
  78. }
  79. /**
  80. * 替换对应key的value
  81. *
  82. * @param mixed $key
  83. * @param mixed $var
  84. * @param mixed $flag
  85. * @param mixed $expire
  86. */
  87. public function replace($key,$var,$flag=0,$expire=1){
  88. $f=memcache_replace($this->memcache,$key,$var,$flag,$expire);
  89. return $f;
  90. }
  91. /**
  92. * 开启大值自动压缩
  93. *
  94. * @param mixed $threshold 单位b
  95. * @param mixed $min_saveings 默认值是0.2表示20%压缩率
  96. */
  97. public function setCompressThreshold($threshold,$min_saveings=0.2){
  98. $f=@memcache_set_compress_threshold($this->memcache,$threshold,$min_saveings);
  99. return $f;
  100. }
  101. /**
  102. * 用于获取一个服务器的在线/离线状态
  103. *
  104. * @param mixed $host
  105. * @param mixed $port
  106. */
  107. public function getServerStatus($host,$port=11211){
  108. $re=memcache_get_server_status($this->memcache,$host,$port);
  109. return $re;
  110. }
  111. /**
  112. * 缓存服务器池中所有服务器统计信息
  113. *
  114. * @param mixed $type 期望抓取的统计信息类型,可以使用的值有{reset, malloc, maps, cachedump, slabs, items, sizes}
  115. * @param mixed $slabid cachedump命令会完全占用服务器通常用于 比较严格的调
  116. * @param mixed $limit 从服务端获取的实体条数
  117. */
  118. public function getExtendedStats($type='',$slabid=0,$limit=100){
  119. $re=memcache_get_extended_stats($this->memcache,$type,$slabid,$limit); //开源代码phpfensi.com
  120. return $re;
  121. }
  122. }
  123. /***********测试区域********************/
  124. $mem=new Yc_Memcache();
  125. $f=$mem->connect('125.64.41.138',12000);
  126. var_dump($f);
  127. if($f){
  128. // $mem->setCompressThreshold(2000,0.2);
  129. $mem->set('key','hello',0,30);
  130. // var_dump($mem->delete('key1'));
  131. // $mem->flush();
  132. // var_dump($mem->replace('hao','d'));
  133. // echo $mem->get('key');
  134. echo $mem->getServerStatus('127.0.0.1',12000);
  135. echo $mem->get('key');
  136. echo '<pre>';
  137. print_r($mem->getExtendedStats());
  138. }
  139. ?>