原本好好的程序,今天执行的时候总是在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;
}
解决memcached_set()报错
最新推荐文章于 2023-03-21 19:48:58 发布