Memcache的客户端连接系列(三) C++

关键词: Memcached   C++ 客户端

**声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(Memcached)的用户指南。**客户端连接方法通用,故摘抄过来分享给大家。

C++客户端示例

  • 用户的弹性云服务器已安装好GCC,建议为4.8.4或更高版本。

  • 已获取libmemcached-x.y.z.tar.gz依赖包。

    说明:

    其中x.y.z为依赖包的版本号,建议获取最新版本。

  1. 获取缓存实例的IP地址/域名和端口。

    1. 登录管理控制台

    2. 在管理控制台左上角单击图标,选择区域和项目。

      说明:

      此处请选择与租户的应用服务相同的区域。

    3. 单击页面上方的“服务列表”,选择“数据库 > 分布式缓存服务”,进入分布式缓存服务信息页面。

    4. 单击左侧菜单栏的“缓存管理”,进入缓存实例信息页面。

    5. 单击需要使用的其中一个缓存实例的名称,进入该缓存实例的基本信息页面。查看并获取该分布式缓存实例的IP地址/域名和端口。

  2. 将已获取的libmemcached-x.y.z.tar.gz依赖包上传到已创建的弹性云服务器。

  3. 登录弹性云服务器。

  4. 执行如下命令安装依赖包。

    tar -xzvf libmemcached-x.y.z.tar.gz

    cd libmemcached-x.y.z

    ./configure --enable-sasl

    make

    make install

  5. 新建build.sh文件,将如下代码复制到build.sh文件。

    g++ -o dcs_sample dcs_sample.cpp -lmemcached -std=c++0x -lpthread -lsasl2
    
  6. 新建dcs_sample.cpp文件,将如下C++代码复制到dcs_sample.cpp文件并修改代码。

    • 密码模式代码示例

      其中ip or domain name和port需要修改为 1获取的缓存实例IP地址/域名和端口。userName和password需要修改为缓存实例的用户名和密码。

      1#include <iostream> 2#include <string> 3#include <libmemcached/memcached.h> 4using namespace std; 5 6#define IP "ip or domain name" 7#define PORT port 8#define USERNAME "userName" 9#define PASSWORD "password" 10memcached_return rusult; 11 12memcached_st * init() 13{ 14 memcached_st *memcached = NULL; 15 memcached_server_st *cache; 16 memcached = memcached_create(NULL); 17 cache = memcached_server_list_append(NULL, IP, PORT, &rusult); 18 19 sasl_client_init(NULL); 20 memcached_set_sasl_auth_data(memcached, USERNAME, PASSWORD); 21 memcached_behavior_set(memcached,MEMCACHED_BEHAVIOR_BINARY_PROTOCOL,1); 22 memcached_server_push(memcached,cache); 23 memcached_server_list_free(cache); 24 return memcached; 25} 26 27int main(int argc, char *argv[]) 28{ 29 memcached_st *memcached=init(); 30 string key = "memcached"; 31 string value = "hello world!"; 32 size_t value_length = value.length(); 33 int expire_time = 0; 34 uint32_t flag = 0; 35 36 rusult = memcached_set(memcached,key.c_str(),key.length(),value.c_str(),value.length(),expire_time,flag); 37 if (rusult != MEMCACHED_SUCCESS){ 38 cout <<"set data failed: " << rusult << endl; 39 return -1; 40 } 41 cout << "set succesed, key: " << key << ", value: " << value << endl; 42 cout << "get key:" << key << endl; 43 char* result = memcached_get(memcached,key.c_str(),key.length(),&value_length,&flag,&rusult); 44 cout << "value:" << result << endl; 45 46 memcached_free(memcached); 47 return 0; 48}
    • 免密模式代码示例

      其中ip or domain name和port需要修改为1获取的缓存实例IP地址/域名和端口。

      1#include <iostream> 2#include <string> 3#include <libmemcached/memcached.h> 4using namespace std; 5 6#define IP "ip or domain name" 7#define PORT port 8memcached_return rusult; 9 10memcached_st * init() 11{ 12 memcached_st *memcached = NULL; 13 memcached_server_st *cache; 14 memcached = memcached_create(NULL); 15 cache = memcached_server_list_append(NULL, IP, PORT, &rusult); 16 memcached_server_push(memcached,cache); 17 memcached_server_list_free(cache); 18 return memcached; 19} 20 21int main(int argc, char *argv[]) 22{ 23 memcached_st *memcached=init(); 24 string key = "memcached"; 25 string value = "hello world!"; 26 size_t value_length = value.length(); 27 int expire_time = 0; 28 uint32_t flag = 0; 29 30 rusult = memcached_set(memcached,key.c_str(),key.length(),value.c_str(),value.length(),expire_time,flag); 31 if (rusult != MEMCACHED_SUCCESS){ 32 cout <<"set data failed: " << rusult << endl; 33 return -1; 34 } 35 cout << "set succesed, key: " << key << " ,value: " << value << endl; 36 cout << "get key:" << key << endl; 37 char* result = memcached_get(memcached,key.c_str(),key.length(),&value_length,&flag,&rusult); 38 cout << "value:" << result << endl; 39 40 memcached_free(memcached); 41 return 0; 42}
  7. 执行如下命令编译源码。

    chmod 700 build.sh

    ./build.sh

    生成dcs_sample二进制文件。

  8. 执行如下命令连接使用缓存实例。

    ./dcs_sample

    1set succesed, key: memcached ,value: hello world! 2get key:memcached 3value:hello world!
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )