日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

跨平台 C/C++ memcached 客户端 memcacheclient 介绍

發布時間:2025/3/21 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跨平台 C/C++ memcached 客户端 memcacheclient 介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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
  • CC=g++??
  • AR=ar??
  • ARFLAGS=-rcs??
  • CFLAGS=-Wall??
  • CPPFLAGS=-Wall??
  • LIBS=-lrt??
  • ??
  • LIB_OBJS=MemCacheClient.o?ReadWriteBuffer.o?Socket.o?Matilda.o?sha1.o??
  • ??
  • OBJS=MemCacheClientTest.o?MemCacheClient.o?ReadWriteBuffer.o?Socket.o?Matilda.o?sha1.o??
  • ??
  • all:?$(OBJS)??
  • ????$(CC)?-o?MemCacheClientTest?$(OBJS)?$(LIBS)??
  • ????$(AR)?$(ARFLAGS)?libMemCacheClient.a?$(LIB_OBJS)??
  • ????mkdir?lib??
  • ????mv?libMemCacheClient.a?lib???
  • ??
  • clean:??
  • ????rm?-rf?core?*.o?lib?MemCacheClientTest??
  • ??
  • install:??
  • ????@echo?No?install?provided.?Include?the?source?files?in?your?project.??
  • ??
  • MemCacheClientTest.o?:?MemCacheClientTest.cpp??
  • MemCacheClient.o?:?MemCacheClient.cpp?MemCacheClient.h??
  • ReadWriteBuffer.o?:?ReadWriteBuffer.cpp?ReadWriteBuffer.h??
  • md5.o?:?md5.c?md5.h??
  • 在 lib 目錄生成 libMemCacheClient.a 即可。配置一下環境變量。

    4、測試


    MemcacheClientTest.cpp :? [cpp] view plain copy
  • #include?<iostream>??
  • ??
  • #ifdef?WIN32??
  • #?include?<winsock2.h>??
  • #?pragma?comment(lib,?"ws2_32.lib")??
  • #endif??
  • ??
  • #include?<MemCacheClient.h>??
  • //#include?<ReadWriteBuffer.h>??
  • ??
  • int?main(int?argc,?char?*argv[])??
  • {??
  • #ifdef?WIN32??
  • ????WSADATA?wsaData;??
  • ????int?rc?=?WSAStartup(MAKEWORD(2,0),?&wsaData);??
  • ????if?(rc?!=?0)?{??
  • ????????std::cout?<<?"Failed?to?start?winsock."?<<?std::endl;??
  • ????????return?1;??
  • ????}??
  • #endif??
  • ??????
  • ????MemCacheClient?*pMemCacheClient?=?new?MemCacheClient;??
  • ??
  • ????try??
  • ????{??
  • ????????if?(pMemCacheClient->AddServer("192.168.21.23:22133"))??
  • ????????{??
  • ????????????std::cout?<<?"Add?server?192.168.21.23:22133?successful!"?<<?std::endl;??
  • ????????}??
  • ??
  • ??????????
  • ??
  • ????????MemCacheClient::MemRequest?cSetReqTest;??
  • ????????cSetReqTest.mKey?=?"TestSet";??
  • ????????cSetReqTest.mData.WriteBytes("TestSet",?sizeof("TestSet"));??
  • ????????if(pMemCacheClient->Set(cSetReqTest)?==?1)??
  • ????????{??
  • ????????????std::cout?<<?"Set?TestSet->TestSet?successful!"?<<?std::endl;??
  • ????????}??
  • ??
  • ????????MemCacheClient::MemRequest?cGetReqTest;??
  • ????????cGetReqTest.mKey?=?"TestSet";??
  • ????????if(pMemCacheClient->Get(cGetReqTest)?==?1)??
  • ????????{??
  • ????????????std::cout?<<?"Get?TestSet->TestSet?successful!"?<<?std::endl;??
  • ????????}??
  • ??
  • ????????std::string?sResult(cGetReqTest.mData.GetReadBuffer(),?cGetReqTest.mData.GetReadSize());??
  • ????????std::cout?<<?"Get:"?<<?sResult?<<?std::endl;??
  • ????}??
  • ????catch(std::exception?&e)??
  • ????{??
  • ????????std::cerr?<<?"Exception:"?<<?e.what()?<<?std::endl;??
  • ????}??
  • ??
  • ????delete?pMemCacheClient;??
  • ??
  • ????return?0;??
  • };??

  • Makefile: [plain] view plain copy
  • CC=g++??
  • CPPFLAGS=-Wall?-I$(MEMCACHECLIENT_ROOT)??
  • LDFLAGS=-L$(MEMCACHECLIENT_ROOT)/lib?-lMemCacheClient?-lrt??
  • ??
  • OBJS=MemcacheClientTest.o??
  • ??
  • all?:?$(OBJS)??
  • ????$(CC)?-o?MemcacheClientTest?$(OBJS)?$(LDFLAGS)??
  • ??
  • MemcacheClientTest.o?:?MemcacheClientTest.cpp??
  • ????$(CC)?$(CPPFLAGS)?-c?MemcacheClientTest.cpp??
  • ??
  • clean?:???
  • ????rm?-rf?*.o?MemcacheClientTest??
  • 完整的測試工程文件,見?MemCacheClientTest.zip

    總結

    在 Windows 下確實很難找到比 memcacheclient 更方便的 memcached 客戶端了(也可能是我孤陋寡聞^_^)。其接口貌似也比較接近舊版的 libmemcached,接口還算簡潔。不過,用的人還是少,沒有深入研讀源碼,還是不要在關鍵項目中使用(過河拆橋,罪過啊)。反正我是再封裝了一層,Windows 下基于 memcacheclient,linux 下基于 libmemcached。

    總結

    以上是生活随笔為你收集整理的跨平台 C/C++ memcached 客户端 memcacheclient 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。