如何判断memcached的是故障还是未设置key

在实现业务时,很多情况通常使用memcached,用以减轻DB压力.但我们get数据时,有时会返回false.返回false的情况有很多种.对于业务来说,需要区别两种状态.1.正常的,当前key我并未设置,或者已经过期.2.不正常.服务问题(如,服务器挂掉, timeout,and so on.) 对于第一种情况,业务通常在重新设置key.对于第二两情况,至少应该报警,抛异常等等.

其实对于memcache,是有返回状态码的.通过getResultCode来获取.其定义的看以下链接.
Memcache 预定义常量

  1 <?php
  2 $m = new Memcached();
  3 $m->addServer('localhost', 8012);
  4 $key = "liuyungu_test";
  5 $a = $m->get($key);
  6 var_dump($m->getResultCode());

key存在并正常获取的话,code为0.Memcached::RES_SUCCESS
key不存在或者过期,并正常获取的话,code为16.Memcached::RES_NOTFOUND
指向一个没有服务的服务器,code为26 Memcached::RES_ERRNO
没有设置服务器,code为20 Memcached::RES_NO_SERVERS
操作超时,code为31,Memcached::RES_TIMEOUT

猜你喜欢

转载自lhdst-163-com.iteye.com/blog/2003924
今日推荐