1、Memcached简介
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
2、客户端
许多语言都实现了连接memcached的客户端,其中以Perl、PHP为主。仅仅memcached网站上列出的语言就有:
Perl、PHP、Python、C#、C/C++等,
本文主要对于C/C++客户端 libmemcached 的主要库函数做简单介绍。
3、libmemcached 库
A、最常用的三个结构体
a、memcached_st
对于memcached的操作都是基于些结构体,用于保存连接信息。
b、memcached_result_st
用于存储一个memcached中的存储对象。
c、memcached_return_t
用于存储返回函数的返回信息。
B、常用函数总结
a、memcached_st * memcached_create(memcached_st *ptr);
该函数用于创建一个memcached_st结构体,ptr可以为NULL,为NULL时,返回一个自动分配的结构体,若失败返回NULL。
b、memcached_st * memcached_clone(memcached_st * des,memcached_st * source);
该函数用于复制一个memcached_st结构体,两指针均可为NULL,source为空时,函数的作用同memcached_create()。
c、void memcached_servers_reset(memcached_st *ptr);
该函数用于清空memcached_st的服务器列表。
d、void memcached_free(memcached_st *ptr);
该函数用于释放ptr所占的资源。
e、memcached_st * memcached(char * str,uint32_t len);
该函数用于根据配置字符串,构造一个memcached_st结构体,str为配置信息,len为str的长度。
f、memcached_return_t memcached_delete(memcached_st *ptr,const char* key,size_t key_length,time_t expiration);
memcached_return_t memcached_delete_by_key(memcached_st *ptr,const char* group_key,size_t group_key_length,const char* key,size_t key_length,time_t expiration);
该函数用于删除某个值,删除后,值被加入删除队列,此时相应的值不能被获取,也不能新增和更新,但可以SET,过期的key值,会使此函数失败。
g、memcached_result_st * memcached_fetch_result(memcached_st *ptr,memcached_result_st *result,memcached_return_t *error);
该函数一般用在memcached_mget()函数之后,用于获取结果集中的一条结果。
h、char * memcached_get(memcached_st *ptr,const char *key,size_t key_length,size_t * value_length,unit32_t * flags,memcached_return_t *error);
该函数用于获取一个key相对应的值,返回的值需要自己去释放空间。失败时返回NULL。
i、char * memcached_mget(memcached_st *ptr,const char * const *key,const size_t key_length,size_t number_of_keys);
该函数用于获取多个key的值,同时获取多个key的值时,此函数速度较快,此函数是异步的。
j、const char * memcached_result_key_value(memcached_result_st *result);
返回当前结果对象的key值。
k、const char * memcached_result_value(memcached_result_st *result);
返回当前结果对象的值。
l、memcached_return_t memcached_set(memcached_st *ptr,const char *key,size_t key_length,const char *value,size_t value_length,time_t expiration,unit32_t flags);
当前服务器上没有相应的key值时,新建key值并写入value,当有key值时,则重写value,一般都会成功,除非发生了网络错误。
m、memcached_return_t memcached_add(memcached_st *ptr,const char *key,size_t key_length,const char *value,size_t value_length,time_t expiration,unit32_t flags);
向服务器上添加一个对象,如果已经存在则出错,否则存储。
n、memcached_return_t memcached_replace(memcached_st *ptr,const char *key,size_t key_length,const char *value,size_t value_length,time_t expiration,unit32_t flags);
替换服务器上的一个对象,如果不存在,则报错。