首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

memcached 存取有关问题

2013-09-08 
memcached 存取问题c代码#include unistd.h#include libmemcached/memcached.h#include string.h#in

memcached 存取问题
c代码


#include <unistd.h>
#include <libmemcached/memcached.h>
#include <string.h>
#include <stdio.h>
#include <stddef.h>
#include <stdint.h>
#include <time.h>
int main(int argc ,char ** argv)
{
    memcached_st * ms;
    ms=memcached_create(NULL);
    time_t expiration;
    uint32_t flags; 
    
    memcached_return rc;
    memcached_server_st * server;
    //conncet to the server
    server=memcached_server_list_append(NULL,"localhost",11211,&rc);
    memcached_server_push(ms,server);
   
    memcached_server_list_free(server);

    char key[]="key";
    char value[]="value";
    size_t keylength=sizeof(key);
    size_t valuelength=sizeof(value);
    
    printf("before set data  keylength:%d  valuelength:%d\n",keylength,valuelength);
    //save data
    rc=memcached_set(ms,key,keylength-1,value,valuelength-1,expiration,flags);
    if(rc==MEMCACHED_SUCCESS)
       printf("save data successful!\n");

    //get data
    char * result=memcached_get(ms,key,valuelength-1,&valuelength,&flags,&rc);
    if(rc==MEMCACHED_SUCCESS)
        printf("get value:%s\n",result);
    
    //delete data
    rc=memcached_delete(ms,key,keylength-1,expiration);
    if(rc==MEMCACHED_SUCCESS)
        printf("delete key:%s\n",key);

    //free
    memcached_free(ms);

    return 0;

}


可以存成功,但是程序中取不到


c++代码

#include <libmemcached/memcached.h>
#include <string>
#include <iostream>

using namespace std;

int main(int argc ,char ** argv)
{
    memcached_st * ms;
    ms=memcached_create(NULL);


    time_t expiration;
    uint32_t flags; 
    
    memcached_return rc;
    memcached_server_st * server;
    //conncet to the server
    server=memcached_server_list_append(NULL,"localhost",11211,&rc);
    memcached_server_push(ms,server);
   
    memcached_server_list_free(server);

    string key="key";
    string value="value";
    size_t keylength=key.length();
    size_t valuelength=value.length();
    
    cout<<"before set data  keylength: "<<keylength<<" valuelength:"<<valuelength<<endl;
    //save data
    rc=memcached_set(ms,key.c_str(),keylength,value.c_str(),valuelength,expiration,flags);
    if(rc==MEMCACHED_SUCCESS)
       cout<<"save data successful!"<<endl;

    //get data
    char * result=memcached_get(ms,key.c_str(),valuelength,&valuelength,&flags,&rc);
    if(rc==MEMCACHED_SUCCESS)
        cout<<"get value: "<<result<<endl;
    
    //delete data
    rc=memcached_delete(ms,key.c_str(),keylength,expiration);
    if(rc==MEMCACHED_SUCCESS)
        cout<<"delete key: "<<key<<endl;

    //free
    memcached_free(ms);

    return 0;

}


有时可以成功,有时不可以

memcached的启动命令是这样写的 ./memcached -p11211 -uroot -d -m80
现在不明白为什么取不出来,我在telnet里取有时也得不到,但是追踪代码是存成功了,求人讲解,多谢了, memcached
[解决办法]
我都是自己实现的memcached异步库,官方的太烂了。
------解决方案--------------------


memcached源码里有协议头文件, 你只需要设计API和网络通信.

热点排行