PHP中Memcache操作类及用法实例

这篇文章主要介绍了PHP中Memcache操作类及用法,以实例形式详细分析了Memcache类连接数据库及进行缓存操作的具体用法,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了PHP中Memcache操作类及用法。分享给大家供大家参考。具体分析如下:

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

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