跨平臺 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客戶端
- 跨平臺的 SQL 客戶端SQL客戶端
- 跨平臺SSH客戶端Termius中文客戶端
- 跨平臺ssh客戶端工具Termius客戶端
- 跨平臺c++/boost/asio 簡單的HTTP POST請求 客戶端模型C++HTTP客戶端模型
- Termius Beta for Mac(跨平臺SSH客戶端)Mac客戶端
- 跨平臺SSH客戶端Termius for Mac使用教程客戶端Mac
- SecureFX for Mac(跨平臺檔案傳輸客戶端)Mac客戶端
- 部落格客戶端介紹客戶端
- C++客戶端程式(socket)C++客戶端
- Mqtt開發筆記:windows下C++ ActiveMQ客戶端介紹、編譯和使用MQQT筆記WindowsC++客戶端編譯
- SecureCRT +SecureFX for Mac(終端ssh工具+跨平臺檔案傳輸客戶端)SecurecrtMac客戶端
- android binder c++層-客戶端(c++) 呼叫 服務端(c++) 例子AndroidC++客戶端服務端
- Redis介紹 && Java客戶端操作RedisRedisJava客戶端
- Solr的Scala客戶端(scalikesolr)介紹Solr客戶端
- Kafka 處理器客戶端介紹Kafka客戶端
- c++跨平臺開發經驗C++
- Termius軟體介紹:跨平臺遠端管理利器,助力高效工作
- binder通訊例項之c++客戶端與c++服務端C++客戶端服務端
- 一個現代化輕量級的跨平臺Redis桌面客戶端Redis客戶端
- 使用c++開發跨平臺的程式C++
- Jenkins 常用 REST API介紹(Java 客戶端)JenkinsRESTAPIJava客戶端
- Memcache客戶端庫libmemcached介紹和部署客戶端IBM
- GitKraken for Mac(跨平臺Git客戶端)v9.8.1中英啟用版GitMac客戶端
- LucaMail: 基於ElectronJs的跨平臺的桌面電子郵件客戶端AIJS客戶端
- BitTorrent 客戶端 Deluge 2.0 釋出:新功能介紹客戶端
- zeroc ice 客戶端與服務端通訊例子(c++)客戶端服務端C++
- C# 跨平臺呼叫C++的函式指標C#C++函式指標
- 資料庫中跨平臺遷移方法介紹資料庫
- 【2】Windows C++ Redis服務端搭建與客戶端開發WindowsC++Redis服務端客戶端
- Java中的幾種Kafka客戶端比較介紹JavaKafka客戶端
- 適合於跨平臺的C++測試工具C++
- C++跨平臺庫boost和Poco的編譯C++編譯
- 測試平臺系列(80) 封裝Redis客戶端封裝Redis客戶端
- 測試平臺系列(90) 編寫oss客戶端客戶端
- Linux 平臺安裝SQLServer客戶端操作指南LinuxSQLServer客戶端
- Redis C客戶端APIRedis客戶端API
- C# MQTT客戶端C#MQQT客戶端