参考官方文档:http://docs.libmemcached.org/index.html
根据菜鸟教程上介绍,c++实现了连接memcached的客户端。
通过apt-cache search,查到到了需要安装的库
root@iZwz9aujzgp9b5o38x29akZ:~# apt-cache search memcached | grep C++
libmemcached-dev - C and C++ client library to the memcached server (development files)
libmemcached11 - C and C++ client library to the memcached server
于是分别安装了libmemcached-dev与libmemcached11
root@iZwz9aujzgp9b5o38x29akZ:~# apt-get install libmemcached11
.....//略
root@iZwz9aujzgp9b5o38x29akZ:~# apt-get install libmemcached-dev
.....//略
然后找到头文件
root@iZwz9aujzgp9b5o38x29akZ:~# cd /usr/include/libmemcached/
root@iZwz9aujzgp9b5o38x29akZ:/usr/include/libmemcached# ll
total 20
drwxr-xr-x 2 root root 4096 Jan 19 19:16 ./
drwxr-xr-x 40 root root 4096 Jan 19 19:15 ../
-rw-r--r-- 1 root root 1713 Jan 18 2019 memcached.h
-rw-r--r-- 1 root root 1717 Jan 18 2019 memcached.hpp
-rw-r--r-- 1 root root 1714 Jan 18 2019 util.h
与libmemcached官方文档相符
接下来就是要写个测试程序,连上memcached
根据官方文档的资源,写了如下测试程序
vim connect_to_memcached.cpp
1 #include <iostream>
2
3 #include <string.h>
4 #include <libmemcached/memcached.h>
5
6 using namespace std;
7 int main()
8 {
9 const char * config_string = "--SERVER=127.0.0.1";
10 memcached_st * memc = NULL;
11 cout << static_cast<const void *>(memc) << endl;
12 memc = memcached(config_string, strlen(config_string));
13 cout << static_cast<const void *>(memc) << endl;
14 memcached_free(memc);
15 cout << static_cast<const void *>(memc) << endl;
16 return 0;
17 }
编译
g++ connect_to_memcached.cpp -o connect_to_memcached.exe
/tmp/ccf2s5UM.o: In function `main':
connect_to_memcached.cpp:(.text+0x2d): undefined reference to `memcached'
connect_to_memcached.cpp:(.text+0x3d): undefined reference to `memcached_free'
collect2: error: ld returned 1 exit status
这里报错了,是因为没有链接其动态库,最终链接失败
g++ connect_to_memcached.cpp -lmemcached -o connect_to_memcached.exe
编译成功。执行./connect_to_memcached.exe
root@iZwz9aujzgp9b5o38x29akZ:~/memcached_cpp# ./connect_to_memcached.exe
0
0x557ca3ff3280
0x557ca3ff3280
说明memcached()给其分配了空间。为了证明连接上了,需要再从memcache里取点数据看看
1 #include <iostream>
2
3 #include <string.h>
4 #include <libmemcached/memcached.h>
5
6 using namespace std;
7
8 int main()
9 {
10 const char * config_string = "--SERVER=127.0.0.1";
11 memcached_st * memc = memcached(config_string, strlen(config_string));
12 memcached_return_t ret;
13 const char * key = "name";
14 size_t value_len;
15 uint32_t flags;
16 char * value = memcached_get(memc, key, strlen(key), &value_len, &flags, &ret);
17 cout << "key:" << key << endl;
18 cout << "ret:" << ret << endl;
19
20 if(memcached_success(ret))
21 {
22 cout << "value:" << value << endl;
23 cout << "value_len:" << value_len << endl;
24 cout << "flags:" << flags << endl;
25 }
26 else
27 {
28 cout << "memcached_get fail" << endl;
29 }
30
31 memcached_free(memc);
32 return 0;
33 }
root@iZwz9aujzgp9b5o38x29akZ:~/memcached_cpp# g++ connect_to_memcached.cpp -lmemcached -o connect_to_memcached.exe
root@iZwz9aujzgp9b5o38x29akZ:~/memcached_cpp# ./connect_to_memcached.exe
key:name
ret:0
value:ccx
value_len:3
flags:0
原文链接: https://www.cnblogs.com/chinxi/p/12215588.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/192083
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!