跨平臺 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,用以生成靜態庫檔案。
- 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 :
- #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;
- };
- 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
相關文章
- 跨平臺`ChatGpt` 客戶端ChatGPT客戶端
- 跨平臺SSH客戶端Termius中文客戶端
- 跨平臺ssh客戶端工具Termius客戶端
- Termius Beta for Mac(跨平臺SSH客戶端)Mac客戶端
- 跨平臺SSH客戶端Termius for Mac使用教程客戶端Mac
- SecureFX for Mac(跨平臺檔案傳輸客戶端)Mac客戶端
- Mqtt開發筆記:windows下C++ ActiveMQ客戶端介紹、編譯和使用MQQT筆記WindowsC++客戶端編譯
- SecureCRT +SecureFX for Mac(終端ssh工具+跨平臺檔案傳輸客戶端)SecurecrtMac客戶端
- Jenkins 常用 REST API介紹(Java 客戶端)JenkinsRESTAPIJava客戶端
- Termius軟體介紹:跨平臺遠端管理利器,助力高效工作
- 使用c++開發跨平臺的程式C++
- 一個現代化輕量級的跨平臺Redis桌面客戶端Redis客戶端
- LucaMail: 基於ElectronJs的跨平臺的桌面電子郵件客戶端AIJS客戶端
- GitKraken for Mac(跨平臺Git客戶端)v9.8.1中英啟用版GitMac客戶端
- BitTorrent 客戶端 Deluge 2.0 釋出:新功能介紹客戶端
- JetBrains CLion 2024.2 (macOS, Linux, Windows) - C 和 C++ 跨平臺 IDEAIMacLinuxWindowsC++IDE
- 跨平臺的C/C++整合開發環境 CLion 2022C++開發環境
- C++跨平臺庫boost和Poco的編譯C++編譯
- Java中的幾種Kafka客戶端比較介紹JavaKafka客戶端
- 高效能 C++ HTTP 客戶端原理與實現C++HTTP客戶端
- C# MQTT客戶端C#MQQT客戶端
- PodLM.ai播客內容生成平臺介紹AI
- 測試平臺系列(90) 編寫oss客戶端客戶端
- 測試平臺系列(80) 封裝Redis客戶端封裝Redis客戶端
- 查詢GBase XDM Cluster的客戶端示例程式介紹客戶端
- CLion 2022開發C及C++所設計的跨平臺IDEC++IDE
- gfx-rs/hal跨平臺圖形抽象庫使用介紹抽象
- 移動跨平臺框架Flutter介紹和學習線路框架Flutter
- 利用Flutter寫一個跨平臺的果核APP(0)——介紹FlutterAPP
- cross-plateform 跨平臺應用程式-07-Taro 介紹ROSORM
- cross-plateform 跨平臺應用程式-10-naitvescript 介紹ROSORMAI
- cross-plateform 跨平臺應用程式-05-Flutter 介紹ROSORMFlutter
- 簡單的C++檔案伺服器--Linux C++客戶端從服務端獲取檔案C++伺服器Linux客戶端服務端
- solr8.6.2 客戶端介面介紹及配置中文分詞器Solr客戶端中文分詞
- 使用VSCode和CMake構建跨平臺的C/C++開發環境VSCodeC++開發環境
- Xrepo:一個現代化的跨平臺 C/C++ 包管理器C++
- AI雲平臺介紹AI
- C++標準庫、C++標準模版庫介紹C++
- C++ 列舉型別介紹C++型別