# 4.7 memcached-C语言客户端编程
API:
http://docs.libmemcached.org/index.html
```cpp
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <libmemcached/memcached.h>
#include <pthread.h>
void *do_search(void *arg)
{
char *key = "key2";
uint32_t flags = 0;
size_t value_length = 0;
memcached_return rc;
memcached_st *memc = (memcached_st *)arg;
sleep(2);
while (1) {
char *value = memcached_get(memc, key, strlen(key),\
&value_length, &flags, &rc);
if (rc == MEMCACHED_SUCCESS) {
printf("key:%s\tvalue:%s\tvalue_lenth:%ld\n", \
key, value, value_length); }
else
printf("unserach or error\n");
printf("search rc: %s\n", memcached_strerror(memc, rc));
sleep(5);
}
}
int main(int argc, char *argv[])
{
memcached_st *memc;
memcached_return rc;
memcached_server_st *servers;
memc = memcached_create(NULL);
servers = memcached_server_list_append(NULL, (char *)"127.0.0.1", 11211, &rc);
servers = memcached_server_list_append(servers, (char *)"127.0.0.1", 11311, &rc);
rc = memcached_server_push(memc, servers);
memcached_server_free(servers);
// 分布 一致性
memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, MEMCACHED_DISTRIBUTION_CONSISTENT);
memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_RETRY_TIMEOUT, 20);
memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS, 1);
memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT, 5);
memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS, true);
pthread_t tid;
pthread_create(&tid, NULL, do_search, (void *)memc);
int time_s1 = 0;
int times = 0;
const char *keys[] = {"key1", "key2", "key3", "key4"};
const size_t key_length[] = {4, 4, 4, 4};
char *values[] = {"first", "second", "third", "forth"};
size_t val_length[] = {5, 6, 5, 5};
int i;
while (times++ < 100000) {
for (i = 0; i < 4; i++) {
rc = memcached_set(memc, keys[i], key_length[i],
values[i], val_length[i],
(time_t)180, (uint32_t)0);
printf("key: %s rc: %s\n", keys[i], memcached_strerror(memc, rc));
}
printf("time : %d\n", time_s1++);
sleep(1);
}
memcached_free(memc);
return 0;
}
```
**编译运行:**
```bash
$ gcc demo.c -lphtead -lmemcached -o demo
$ ./demo
```
**运行结果:**
两个观察端:
![](https://img.kancloud.cn/aa/12/aa122332e3021f94e5e196a97175494f_611x410.png)
运行测试程序:
![](https://img.kancloud.cn/3d/9c/3d9cafa7c9b0367154bb54c966e863ab_570x512.png)
- 概要
- 1 分布式存储fastDFS
- 1.1 fastDFS 通用介绍
- 1.2 fastDFS安装和使用
- 1.3 基于fastDFS实现分布式
- 2 缓存数据库redis快速搭建
- 2.1 环境安装
- 2.2 redis数据类型
- 2.3 redis订阅发布模式
- 2.4 redis事务
- 2.5 redis备份
- 3 redis详细攻略
- 3.1 redis简介
- 3.2 redis使用场景
- 3.3 redis基本操作
- 3.4 redis数据类型
- 3.4.1 字符串
- 3.4.2 HASH-字典
- 3.4.3 List-列表
- 3.4.4 Set-集合
- 3.4.5 Sorted Set-有序集合
- 3.4.6 订阅-发布
- 3.4.7 事务
- 3.5 redis配置文件
- 3.6 持久化
- 3.7 redis性能测试
- 3.8 redis-C-API
- 3.9 redis-C++-API
- 3.10 总结与建议
- 4 memcache缓存数据库
- 4.1 什么是memcached
- 4.2 memcached的特征
- 4.3 memcached的内存管理
- 4.4 如何使用memcached
- 4.5 memcached参数详解
- 4.6 memcached安装
- 4.7 memcached-C客户端
- 4.8 memcached-C++客户端
- 5 Nginx
- 6 FastCGI
- 6.1 CGI
- 6.2 FastCGI
- 6.3 Nginx与FastCGI
- 7 Nginx上部署fastDFS
- 8 项目概要
- 8.1 上传文件功能
- 8.2 主界面显示与下载文件功能
- 8.3 注册功能
- 8.4 登陆功能
- 8.5 文件分类功能
- 8.6 个人网盘功能
- 8.8 秒传功能