所以我有一个非常相关的问题: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/

10-13 07:09