Home  >  Article  >  Backend Development  >  PHP memcached cache class code example

PHP memcached cache class code example

WBOY
WBOYOriginal
2016-07-25 08:52:15804browse
  1. class MemcacheModel {
  2. private $mc = null;
  3. /**
  4. * Constructor method, used to add servers and create memcahced objects
  5. */
  6. function __construct(){
  7. $params = func_get_args();
  8. $mc = new Memcache;
  9. //If there are multiple memcache servers
  10. if( count($params) > 1){
  11. foreach ($params as $v){
  12. call_user_func_array(array($mc, 'addServer'), $v);
  13. }
  14. //If there is only one memcache server
  15. } else {
  16. call_user_func_array(array($mc, 'addServer'), $params[0]);
  17. }
  18. $this->mc=$mc;
  19. }
  20. / **
  21. * Get memcached object
  22. * @return object memcached object
  23. */
  24. function getMem(){
  25. return $this->mc;
  26. }
  27. /**
  28. * Check whether mem is connected successfully
  29. * @return bool Returns true if the connection is successful, otherwise returns false
  30. */
  31. function mem_connect_error(){
  32. $stats=$this->mc- >getStats();
  33. if(emptyempty($stats)){
  34. return false;
  35. }else{
  36. return true;
  37. }
  38. }
  39. private function addKey($tabName, $key){
  40. $keys=$ this->mc->get($tabName);
  41. if(emptyempty($keys)){
  42. $keys=array();
  43. }
  44. //If the key does not exist, add one
  45. if(!in_array ($key, $keys)) {
  46. $keys[]=$key; //Add new keys to the keys of this table
  47. $this->mc->set($tabName, $keys, MEMCACHE_COMPRESSED , 0);
  48. return true; //return true if it does not exist
  49. }else{
  50. return false; //return false if it exists
  51. }
  52. }
  53. /**
  54. * Add data to memcache
  55. * @param string $tabName The name of the data table that needs to be cached
  56. * @param string $sql Use sql as the key of memcache
  57. * @param mixed $data The data that needs to be cached
  58. */
  59. function addCache($tabName, $sql, $data){
  60. $key=md5($sql);
  61. //If it does not exist
  62. if($this->addKey($tabName, $key)){
  63. $this->mc->set( $key, $data, MEMCACHE_COMPRESSED, 0);
  64. }
  65. }
  66. /**
  67. * Get the data saved in memcahce
  68. * @param string $sql Use SQL key
  69. * @return mixed Return the data in the cache
  70. */
  71. function getCache($sql){
  72. $key=md5($sql);
  73. return $this->mc ->get($key);
  74. }
  75. /**
  76. * Delete all caches related to the same table
  77. * @param string $tabName The table name of the data table
  78. */
  79. function delCache($tabName){
  80. $keys=$this->mc->get($tabName);
  81. / /Delete all caches of the same table
  82. if(!emptyempty($keys)){
  83. foreach($keys as $key){
  84. $this->mc->delete($key, 0); //0 Indicates immediate deletion
  85. }
  86. }
  87. //Delete all sql keys of the table
  88. $this->mc->delete($tabName, 0);
  89. }
  90. /**
  91. * Delete the cache of a single statement
  92. * @param string $sql SQL statement executed
  93. */
  94. function delone( $sql){
  95. $key=md5($sql);
  96. $this->mc->delete($key, 0); //0 means delete immediately
  97. }
  98. }
  99. ?>
Copy Code


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn