使用libmemcached的c客户端
来源:互联网 发布:国际数据是什么 编辑:程序博客网 时间:2024/04/30 02:43
要将操纵memcached的模块插入nginx中,但nginx源码用c写的,编译器也是gcc, 所以为了能顺利通过,使用纯c编写一个libmemcache的客户端
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <unistd.h> #include <libmemcached/memcached.h> #define DEBUG_READ 1 static memcached_st *memc;void Init_memcached(){memcached_return rc; memcached_server_st *servers; //connect multi server memc = memcached_create(NULL); servers = memcached_server_list_append(NULL, (char*)"localhost", 11211, &rc); //servers = memcached_server_list_append(servers, (char*)"localhost", 30000, &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_SERVER_FAILURE_LIMIT 和 MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT, 5) ; memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS, 1) ; }int Insert(const char* key, const char* value,time_t expiration){if (NULL == key || NULL == value){ return -1;}uint32_t flags = 0;memcached_return rc;rc = memcached_set(memc, key, strlen(key),value, strlen(value), expiration, flags);// insert okif (MEMCACHED_SUCCESS == rc){return 1;}else{return 0;}}; const char* Get(const char* key){ if (NULL == key) { return "no key"; }uint32_t flags = 0;memcached_return rc;size_t value_length;char* value = memcached_get(memc, key, strlen(key), &value_length, &flags, &rc);// get okif(rc == MEMCACHED_SUCCESS){ return value;}return "no value";};int main(int argc, char *argv[]) { Init_memcached();const char *mem_key = "/test.html";const char *mem_value = "what a beautifule day!\r\nYes, it is.";#if DEBUG_READ int result = Insert(mem_key,mem_value, 0); if(result){printf("insert key: %s, value: %s\n", mem_key, mem_value);}#endifconst char* get_value = Get(mem_key);printf("get_value: %s\n", get_value); //free if(memc) {memcached_free(memc); } return 0; }
编译时候需要链接memcached的动态库, -lmemcached, 所以编译命令为
gcc -lmemcached -g test.c -o test
0 0
- 使用libmemcached的c客户端
- 使用libmemcached的c++客户端
- memcachedb的C语言客户端libmemcached
- libmemcached的C-API访问memcached server
- c libmemcached连接memcached
- 封装 libmemcached 构建 memcached 客户端
- libmemcached C++使用示例
- 使用libmemcached访问Memcached
- 【Memcached】libmemcached API使用
- 使用连接池访问memcached(libmemcached)的完整例子
- libmemcached的安装
- libmemcached的Bug Patch
- libmemcached的调试
- libmemcached的头文件
- libmemcached的执行流程
- libmemcached
- Memcached/Libmemcached使用经验总结(一)
- 安装libmemcached遇到的问题
- linux系统调用之-fork、wait、waitpid
- js格式化数字 金额按千位逗号分隔
- java/js的md5加密
- chipscope使用中遇到的一些问题
- TabLayout 在Fragment中显示异常
- 使用libmemcached的c客户端
- XML数据解析———NSXMLParser
- R-B Tree
- Android studio统计代码行数插件-->statistic
- MouseFollowRotation Unity3d鼠标点击旋转相机
- 蓝桥杯 — 星系炸弹( 在X星系的广袤空间中漂浮着许多X星人造“炸弹”)
- 并行程序设计听课笔记
- 看懂这些例子,一天之内学会python2
- Tomcat启动分析