Home > Article > Backend Development > How to use php to determine whether memcache key/value exists
memcache is a set of distributed cache software used for data caching and distributed website sessions Storage etc. Use the key=>value method to store data and support data compression storage processing and data expiration processing.
value only supports string. If you need other formats, you can convert it to json first and then save it.
Usage:
<?php$m = new Memcache;$m->connect('localhost', 11211);$m->set('foo', 100); // 保存数据echo $m->get('foo'); // 读取数据?>
Use memcache as a data cache. The steps are generally
1. Determine whether memcache has data. If so, return directly, otherwise from Get data from the data source.
2. After obtaining the data from the data source, write it into memcache as a cache and wait for the next request.
To determine whether memcache has data, the data is usually obtained through the get method and is judged based on whether the data is false.
<?php$m = new Memcache;$m->connect('localhost', 11211);$m->set('foo', 100);if($m->get('foo')){ echo 'foo 存在<br>'; }else{ echo 'foo 不存在<br>'; }$m->delete('foo');if($m->get('foo')){ echo 'foo 存在<br>'; }else{ echo 'foo 不存在<br>'; }?>
But this judgment is not rigorous enough. If the value is false or null, it will be judged as not existing. We can judge whether the data exists by judging whether the key exists.
<?php$m = new Memcache;$m->connect('localhost', 11211);// 正常值判断echo '正常值判断:';$m->set('foo', 100);if(check_key_exists($m, 'foo')){ echo 'foo key存在<br>'; }else{ echo 'foo key不存在<br>'; }// false判断echo 'false判断:';$m->set('foo', false);if(check_key_exists($m, 'foo')){ echo 'foo key存在<br>'; }else{ echo 'foo key不存在<br>'; }// null判断echo 'null判断:';$m->set('foo', null);if(check_key_exists($m, 'foo')){ echo 'foo key存在<br>'; }else{ echo 'foo key不存在<br>'; }// 数据过期后判断,1秒后过期echo '过期判断:';$m->set('foo', 100, 0, 1); sleep(2);if(check_key_exists($m, 'foo')){ echo 'foo key存在<br>'; }else{ echo 'foo key不存在<br>'; }// delete后判断echo 'delete后判断:';$m->set('foo', 100);$m->delete('foo');if(check_key_exists($m, 'foo')){ echo 'foo key存在<br>'; }else{ echo 'foo key不存在<br>'; }/** * @param Obj $m memcache obj * @param String $name key name * @return Boolean */function check_key_exists($m, $name){ $data = $m->get($name); return $data!==false; }?>
Output:
Normal value judgment: foo key exists
False judgment: foo key exists
Null judgment: foo key exists
Expired judgment: foo key does not exist
Judgment after delete: foo key does not exist
Only the key is delete or has expired will be judged as not existing. In other cases, even if the value is null/false, it will exist.
Note: If the value of value is false, the result obtained by using the memcache get method is ""empty string, Because memcache can only save string data, false is converted to an empty string when saving.
This article explains how to use PHP to determine whether the memcache key/value exists. For more related content, please pay attention to the PHP Chinese website.
Related recommendations:
How to let php send custom data through header
How to use inet_aton and inet_ntoa through mysql Processing ip address data
php json data using gzip compression output related content
The above is the detailed content of How to use php to determine whether memcache key/value exists. For more information, please follow other related articles on the PHP Chinese website!