企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 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)