memcached的学习(5)

2018.6.12
前面讲述了直接使用memcached命令的使用方法,这里使用库libmemcached客户端,如何使用其实现上面的这些命令操作,也就是libmemcached提供的API有哪些?
具体的见官方文件:
http://docs.libmemcached.org/libmemcached-1.0/memcached_touch.html

下面对几个常见的API进行一个说明:

1、说明API操作都需要创建一个memcached的对象:

在这里插入图片描述

2、有创建就有删除,删除memcached_st结构

在这里插入图片描述

3、拷贝一个memcached_st的结构对象

在这里插入图片描述

4、用有了memcached的操作对象之后,向此对象中添加memcached服务器地址及对应的端口号

在这里插入图片描述

5、因为客户端可以连接多个服务器,因此可能存在有多个服务,这里体现了分布式的思想,所以可以查看连接服务的个数

在这里插入图片描述

6、返回连接服务器的对象数组

在这里插入图片描述

7、连接多个服务器,添加服务对象数组

在这里插入图片描述

下面重点介绍,数据操作的相关命令

8、set命令

在这里插入图片描述

9、get命令

在这里插入图片描述

10、delete命令

在这里插入图片描述
————————————————————————————————————————————

还有其他的常见的API说明:

1. 创建和删除memcached_st结构。

#include <libmemcached/memcached.h>
memcachd_st ;该结构可以静态创建也可以由memcached_create动态创建。
 
memcached_st* memcached_create(memcached_st *ptr)
ptr不为空时是静态创建,如果ptr为空,那么该函数返回一个memcached_st结构。
 
void memcached_free(memcached_st *ptr)
释放memcached_st结构所用的内存,删除memcached_st。
 
memcached_st*memcached_clone(memcached_st*destination,memcached_st *source
克隆一个memcached_st结构;如果source为空,那么其作用和memcached_create一样,如果destination为空,则该函数的返回值将会返回一个和source一样的memcached_st结构。
 
void memcached_servers_reset(memcached_st)
将memcached_st所拥有与服务器的连接全都断开。

2.Memcached_return_t的返回值。

MEMCACHED_SUCCESS表示操作成功,其他均表示错误;其他错误的详情参考:http://docs.libmemcached.org/error_messages.html。

3.增加和减少值。

#include <libmemcached/memcached.h>
memcached_return_t memcached_increment (memcached_st *ptr, const char *key, size_t key_length, unsigned int offset, uint64_t *value)
 
memcached_return_t memcached_decrement (memcached_st *ptr, const char *key, size_t key_length, unsigned int offset, uint64_t *value)
offset是其增加或者减少的数值,改变后的值通过value指针返回。

其他增加和减少操作参见:
http://docs.libmemcached.org/memcached_auto.html。

4.从服务器获取值。

#include <libmemcached/memcached.h>
char * memcached_get(memcached_st *ptr, const char *key, size_t key_length, size_t *value_length, uint32_t *flags, memcached_return_t *error);
一次通过一个键获取一个值。

memcached_return_t memcached_mget(memcached_st *ptr, const char * const *keys, const size_t *key_length, size_t number_of_keys)

memcached_result_st * memcached_fetch_result(memcached_st *ptr, memcached_result_st *result, memcached_return_t *error)

以上两个函数同时配合使用,一次调用可以通过多个键获取多个值。先通过memcached_mget调用获取多个键的值,这些值通过循环调用memcached_fetch_result来获得每一个键所对应的值,直到该函数返回0。

5.Store, Add and Replace的操作。

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, uint32_t flags);
memcached中如果存在该键,则利用新值去替换,否则将该记录写入memcached中。
 
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, uint32_t flags);
如果memcached中存在该键,发生错误;否则将该记录添加进memcached中。
 
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, uint32_t flags);
如果memcached中没有该键,发生错误;否则替换value。
以上三个函数中,key的长度不能超过250个字符,value是一个16个字节的值。Expiration是该记录在memcached的有效时间,即是超时时间。

6.删除操作。

memcached_return_t memcached_delete (memcached_st *ptr, const char *key, size_t key_length, time_t expiration);
该函数将与key对应的记录放入删除队列中,并且通过expiration指定该记录从服务器删除的时间。

7.断开客户端与服务器的连接。

void memcached_quit (memcached_st *ptr);

使用遇到的:

memcached_server_list_st memcached_server_list_append(memcached_server_list_st list, const char *hostname, unsigned int port, memcached_return_t *error)
该函数是将要连接的服务器添加到memcached_server_st数组中,返回值为NULL时表示出现错误,如果未指定port端口则使用默认的端口。
 
memcached_return_t memcached_server_push(memcached_st *ptr, const memcached_server_st *list)
该函数将 memcached_server_st数组添加到memcached_st结构中。
 
void memcached_server_list_free(memcached_server_list_st list)
释放memcached_server_list_st所占据的内存。

思考:

1、客户端提供的API,用户可以在上面实现对memcached的访问,本身也是为web的数据进行缓存的设计目的,因此可以在web的后台调用这些API,实现对数据的缓存。

2、同时,客户端也可以提供对多个memcached服务器的连接,实现一个分布式的缓存服务,这些需要用户自己的基于这些API进行搭建。

3、接下里了解memcached服务器端,如何存储数据的。看源码,然后再去看是否有现有的框架如何在memcached上实习分布式的。

猜你喜欢

转载自blog.csdn.net/u012414189/article/details/84315317
今日推荐