其他参考:http://blog.csdn.net/kingjo002/article/details/9770719
Libmemcached是Memcached的客户端库,使用C语言编写。Memcached的安装,可以参考这里。下面介绍Libmemcached的安装。
安装
首先,下载Libmemcached:https://launchpad.net/libmemcached/
解压后,进度目录,进行配置和安装:
配置
./configure -prefix=/usr
安装
sudo make install
测试
下面介绍几个常用函数
memcached_st *memcached_create (memcached_st *ptr);
创建一个新的memcached_st结构,可是传入现有的memcached_st或NULL。如果传入为NULL,则创建一个新的memcached_st结构。成功返回指针,失败返回NULL。
void memcached_free (memcached_st *ptr);
释放创建的memcached_st结构
memcached_st *memcached_clone(memcached_st *clone, memcached_st *source);
克隆一个memcached_st结构,同时会拷贝结构中的server list。
memcached_return memcached_server_add (memcached_st *ptr, char *hostname, unsigned int port);
向ptr添加server地址。
unsigned int memcached_server_count (memcached_st *ptr);
返回memcached_st中的server个数
memcached_server_st *memcached_server_list (memcached_st *ptr);
返回ptr中server的数组
memcached_return memcached_server_push (memcached_st *ptr, memcached_server_st *list);
向prt添加server数组
memcached_server_st *memcached_server_list_append (memcached_server_st *ptr, char *hostname, unsigned int port, memcached_return *error);
通过ip,端口号形式向ptr添加server
下面介绍set/get函数
memcached_return memcached_set (memcached_st *ptr, const char *key, size_t key_length, const char *value, size_t value_length, time_t expiration, uint32_t flags);
expiration为超时时间,flags为标志位。
char *memcached_get (memcached_st *ptr, const char *key, size_t key_length, size_t *value_length, uint32_t *flags, memcached_return *error);
获取key元素的value
memcached_delete(memcached_st *ptr, const char *key, size_t key_length, time_t expiration);
删除key元素
下面写个测试用例,在编译时要链接libmemcached的库,加上-lmemcached
#include <iostream>#include <string>#include <sys/time.h>#include <libmemcached/memcached.h>using namespace std;int main(int argc,char *argv[]){ memcached_st *memc; memcached_return rc; memcached_server_st *servers; time_t expiration = 180; uint32_t flags = 0; memc = memcached_create(NULL); servers = memcached_server_list_append(NULL, "localhost", 8000, &rc); rc = memcached_server_push(memc, servers); memcached_server_list_free(servers); string key = "key"; string value = "value"; size_t value_length = value.length(); size_t key_length = key.length(); struct timeval start; struct timeval end; gettimeofday(&start, NULL); for(int i=0; i < 1000; ++i) { rc = memcached_set(memc, key.c_str(), key.length(), value.c_str(), value.length(), expiration, flags); if(rc == MEMCACHED_SUCCESS) { cout<<"Save data: "<<value<<" successful!"<<endl; } char* result = memcached_get(memc, key.c_str(), key_length, &value_length, &flags, &rc); if(rc == MEMCACHED_SUCCESS) { cout<<"Get value: "<<value<<"by key "<<key<<"successful!"<<endl; } rc = memcached_delete(memc, key.c_str(), key_length, expiration); if(rc == MEMCACHED_SUCCESS) { cout<<"Delete data: "<<value<<" successful!"<<endl; } } gettimeofday(&end, NULL); cout<<"Use Time"<<start.tv_sec-end.tv_sec<<"sec, "<<start.tv_usec-end.tv_usec<<"usec"; memcached_free(memc); return 0;}