所以我有一个非常相关的问题:question with memcached_get() in libmemcached
从文档看来,这似乎并不明显或不可能。是否可以在不知道数据长度的情况下基于键获取值?我计划让多个线程更改键的值,因此无法保存以前的值长度。我尝试将 * value_length 设置为NULL,0或任意高数而没有效果(例如,程序崩溃)。我希望可以使用以null终止的字符串来实现,但是它不知道libmemcached的内部。有什么建议,指针吗? thnx。
char *memcached_get (memcached_st *ptr,
const char *key, size_t key_length,
size_t *value_length,
uint32_t *flags,
memcached_return *error);
一些更好的文档:http://dev.mysql.com/doc/refman/5.1/en/ha-memcached-interfaces-libmemcached.html#ha-memcached-interfaces-libmemcached-get
最佳答案
好的,这要归功于[/ sarcasm]出色的文档,或者可能是我对C++的经验不足,所以对memcached_get函数存在误解。根据
http://docs.oracle.com/cd/E17952_01/refman-5.0-en/ha-memcached-interfaces-libmemcached.html#ha-memcached-interfaces-libmemcached-get
该函数使用size_t * value_length来存储返回值的大小。所以这样写你的函数:
memcached_st *memc;
memcached_return rc;
memcached_return error;
memc= memcached_create(NULL);
servers= memcached_server_list_append(servers, "localhost", 11211, &rc);
rc= memcached_server_push(memc, servers);
uint32_t flags;
size_t return_value_length;
const char *key = "123";
const char *response = memcached_get(memc,
key, strlen (key),
&return_value_length,
&flags,
&error);
关于c++ - 在没有value_length的libmemcached中使用memcached_get(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10842909/