1、简介

 C/C++ memcached 客户端首推 libmemcached,但是其并不兼容 Windows 下 VC++ 编译器。在 google code 的 memcached wiki 有关于 memcacheclient 的简介“memcacheclient——cross-platform, but primary focus on Windows (last updated in 2008)”。在 memcacheclient 项目页面发现该项目于 2012 年更新过,值得试用。

2、环境&软件准备

memcacheclient-2.0 : http://code.jellycan.com/files/memcacheclient-2.0.zip

3、安装&&配置

Windows

windows,你懂的。解压,双击 sln,生成解决方案。看到 Debug 目录下面生成了 MemCacheClient.lib 就 OK 了。VS 配置一下 VC++ 目录即可。

Linux

Linux 下,解压,make 即可。不过,原始的 Makefile 只生成 MemCacheClientTest 这么个怪东西,也就是生成个测试程序,没有生成库文件。可以替换成下面的 Makefile,用以生成静态库文件。
[plain] view plain copy
  1. CC=g++
  2. AR=ar
  3. ARFLAGS=-rcs
  4. CFLAGS=-Wall
  5. CPPFLAGS=-Wall
  6. LIBS=-lrt
  7. LIB_OBJS=MemCacheClient.o ReadWriteBuffer.o Socket.o Matilda.o sha1.o
  8. OBJS=MemCacheClientTest.o MemCacheClient.o ReadWriteBuffer.o Socket.o Matilda.o sha1.o
  9. all: $(OBJS)
  10. $(CC) -o MemCacheClientTest $(OBJS) $(LIBS)
  11. $(AR) $(ARFLAGS) libMemCacheClient.a $(LIB_OBJS)
  12. mkdir lib
  13. mv libMemCacheClient.a lib
  14. clean:
  15. rm -rf core *.o lib MemCacheClientTest
  16. install:
  17. @echo No install provided. Include the source files in your project.
  18. MemCacheClientTest.o : MemCacheClientTest.cpp
  19. MemCacheClient.o : MemCacheClient.cpp MemCacheClient.h
  20. ReadWriteBuffer.o : ReadWriteBuffer.cpp ReadWriteBuffer.h
  21. md5.o : md5.c md5.h
在 lib 目录生成 libMemCacheClient.a 即可。配置一下环境变量。

4、测试

MemcacheClientTest.cpp : 
[cpp] view plain copy
  1. #include <iostream>
  2. #ifdef WIN32
  3. # include <winsock2.h>
  4. # pragma comment(lib, "ws2_32.lib")
  5. #endif
  6. #include <MemCacheClient.h>
  7. //#include <ReadWriteBuffer.h>
  8. int main(int argc, char *argv[])
  9. {
  10. #ifdef WIN32
  11. WSADATA wsaData;
  12. int rc = WSAStartup(MAKEWORD(2,0), &wsaData);
  13. if (rc != 0) {
  14. std::cout << "Failed to start winsock." << std::endl;
  15. return 1;
  16. }
  17. #endif
  18. MemCacheClient *pMemCacheClient = new MemCacheClient;
  19. try
  20. {
  21. if (pMemCacheClient->AddServer("192.168.21.23:22133"))
  22. {
  23. std::cout << "Add server 192.168.21.23:22133 successful!" << std::endl;
  24. }
  25. MemCacheClient::MemRequest cSetReqTest;
  26. cSetReqTest.mKey = "TestSet";
  27. cSetReqTest.mData.WriteBytes("TestSet", sizeof("TestSet"));
  28. if(pMemCacheClient->Set(cSetReqTest) == 1)
  29. {
  30. std::cout << "Set TestSet->TestSet successful!" << std::endl;
  31. }
  32. MemCacheClient::MemRequest cGetReqTest;
  33. cGetReqTest.mKey = "TestSet";
  34. if(pMemCacheClient->Get(cGetReqTest) == 1)
  35. {
  36. std::cout << "Get TestSet->TestSet successful!" << std::endl;
  37. }
  38. std::string sResult(cGetReqTest.mData.GetReadBuffer(), cGetReqTest.mData.GetReadSize());
  39. std::cout << "Get:" << sResult << std::endl;
  40. }
  41. catch(std::exception &e)
  42. {
  43. std::cerr << "Exception:" << e.what() << std::endl;
  44. }
  45. delete pMemCacheClient;
  46. return 0;
  47. };

Makefile:

[plain] view plain copy
  1. CC=g++
  2. CPPFLAGS=-Wall -I$(MEMCACHECLIENT_ROOT)
  3. LDFLAGS=-L$(MEMCACHECLIENT_ROOT)/lib -lMemCacheClient -lrt
  4. OBJS=MemcacheClientTest.o
  5. all : $(OBJS)
  6. $(CC) -o MemcacheClientTest $(OBJS) $(LDFLAGS)
  7. MemcacheClientTest.o : MemcacheClientTest.cpp
  8. $(CC) $(CPPFLAGS) -c MemcacheClientTest.cpp
  9. clean :
  10. rm -rf *.o MemcacheClientTest

完整的测试工程文件,见 MemCacheClientTest.zip

总结

在 Windows 下确实很难找到比 memcacheclient 更方便的 memcached 客户端了(也可能是我孤陋寡闻^_^)。其接口貌似也比较接近旧版的 libmemcached,接口还算简洁。不过,用的人还是少,没有深入研读源码,还是不要在关键项目中使用(过河拆桥,罪过啊)。反正我是再封装了一层,Windows 下基于 memcacheclient,linux 下基于 libmemcached。

跨平台 C/C++ memcached 客户端 memcacheclient 介绍相关推荐

  1. 【转】memcached工作原理介绍

    FROM: http://my.oschina.net/flynewton/blog/8984 官方主页: http://memcached.org/ 面临的问题  对于高并发高访问的Web应用程序来 ...

  2. memcached客户端_Memcached Java客户端示例

    memcached客户端 Today we will look into Memcached Java client example. Earlier we learned about telnet ...

  3. 基于java nio的memcached客户端——xmemcached

    1.xmemcached是什么? xmemcached是基于java nio实现的memcached客户端API. 实际上是基于我实现的一个简单nio框架 http://code.google.com ...

  4. Memcached 客户端使用

    Memcached  客户端使用 网上摘抄,以备后用 package com.test.memcache; import java.util.Date; import com.danga.MemCac ...

  5. 【Alljoyn】 Alljoyn学习笔记七 Alljoyn瘦客户端库介绍

    Alljoyn瘦客户端库介绍(上) 1.简介 本文档对AllJoynTM瘦客户端的核心库文件(AJTCL)进行了详尽的介绍.本文档介绍了系统整体架构,AllJoyn框架结构,并着重于介绍如何将嵌入式设 ...

  6. c++ ftp服务端_FTP客户端软件介绍及使用

    FTP客户端软件介绍及使用 客户端软件: ftp,lftp,lftpget,wget,curl ftp -A ftpserver port -A 主动模式 –p 被动模式 lftp –u userna ...

  7. memcached客户端_分布式算法真是吊炸天 – memcached - 第287篇

    相关历史文章(阅读本文之前,您可能需要先看下之前的系列 ) 色谈Java序列化:女孩子慎入 - 第280篇 烦不烦,别再问我时间复杂度了:这次不色,女孩子进来吧 - 第281篇 双向链表,比西天还远? ...

  8. 艾伟:自己实现memcached客户端库

    What's memcached ? memcached是一个以key-value的形式缓存数据的缓存系统.通过将数据缓存到内存中,从而提高数据的获取速度. memcached以key-value的形 ...

  9. 【数据库】GaussDB客户端工具介绍

    文章目录 前言 一.客户端工具介绍 二.zsql安装 三.gsql 四.Data Studio 前言 这次我们来看GaussDB的一些客户端工具,帮助我们更好的操作数据库 一.客户端工具介绍 客户端工 ...

最新文章

  1. DL-5 深度学习框架的对比
  2. 回车与换行 ASCII
  3. Java编程经验汇总
  4. 进制转换中dbho是什么意思_什么是网段?二进制十进制如何互相转换?看完这篇,你就全明白了...
  5. Flume+HBase+Kafka集成与开发
  6. matlab如何创建元组_MATLAB图像处理:42:使用预定义滤波器过滤图像
  7. Java集合类源码解析:Vector
  8. 计算机硬件的基本组成(计算机组成原理3)
  9. 电力拖动自动控制系统_建筑电气控制系统安装
  10. 【LeetCode】75. 颜色分类,使得相同颜色的元素相邻
  11. frida-trace入门
  12. STRING网站分析蛋白质相互作用
  13. 搜狗浏览器收藏夹误删恢复
  14. 深度学习: 指数加权平均
  15. Power BI中计算同比、环比
  16. 网络在线直播技术揭秘(一):编码与压缩算法
  17. java 面试知识点笔记(七)多线程与并发 上篇
  18. 交换机与路由器技术:VLAN Trunk、单臂路由和三层交换及配置
  19. springboot vue3 elementui plus小说阅读网站源码
  20. 从流水线角度看MIPS处理器ISA的实现逻辑以及RTOS操作系统仿真

热门文章

  1. oracle消除重复的行使用的什么函数,利用Oracle的row_number() over函数消除重复的记录...
  2. foreach 二维java_教你如何用for和foreach循环遍历java中的二维数组
  3. 高中数学?_JAVA
  4. 【自动驾驶】33.【图像坐标系】 到 【像素坐标系】 的度量单位变换、【英寸】、【感光芯片】
  5. Python-OpenCV 处理图像(四):图像直方图和反向投影
  6. Ubuntu命令行下安装、卸载、管理软件包的方法
  7. echarts散点图使用
  8. java 异常捕捉 ( try catch finally ) 你真的掌握了吗?
  9. Spring(一)——总体介绍
  10. 信息系统项目管理师:论项目的质量管理