解决memcached_set()报错

原本好好的程序,今天执行的时候总是在memcached_set()这个函数调用的时候出错。
刚开始返回的错误信息是MEMCACHED_SERVER_ERROR(10),想了半天,怀疑是协议的问题,于是初始化后设置协议为二进制的:
m_Mem = memcached_create(NULL);
m_iErrorCode = memcached_behavior_set(m_Mem,
MEMCACHED_BEHAVIOR_BINARY_PROTOCOL,
1ULL);

哇!再执行memcached_set()的时候果然没有报MEMCACHED_SERVER_ERROR(10)了,而是报MEMCACHED_WRITE_FAILURE(5)。抓狂…………

后来认真检查,发现自己犯了弱智的错误:对应端口的memcached根本没启动!可是可是,为什么添加服务器的时候不报错?
哦!原来调用memcached_server_add()的时候,只是把服务器加到列表里面,并不检查服务器是否可用,所以等到memcached_set()的时候才报错!
看来,调用memcached_server_add()以前,还是检查服务器是否可用先:
bool TestServer(const char* ip, unsigned short port)
{
memcached_st* mem = memcached_create(NULL);
memcached_return errorCode = memcached_server_add(mem, (char*)ip, port);
if (MEMCACHED_SUCCESS!=errorCode)
{
memcached_free(mem);
return false;
}
errorCode = memcached_set(mem, "__test_server__", sizeof("__test_server__")-1,
"test", sizeof("test")-1, 2, 0);
if (MEMCACHED_SUCCESS!=errorCode)
{
memcached_free(mem);
return false;
}
memcached_free(mem);
return true;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值