关键词: 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需要修改为缓存实例的用户名和密码。

      #include <iostream>
      #include <string>
      #include <libmemcached/memcached.h>
      using namespace std; #define IP "ip or domain name"
      #define PORT port
      #define USERNAME "userName"
      #define PASSWORD "password"
      memcached_return rusult; memcached_st * init()
      {
      memcached_st *memcached = NULL;
      memcached_server_st *cache;
      memcached = memcached_create(NULL);
      cache = memcached_server_list_append(NULL, IP, PORT, &rusult); sasl_client_init(NULL);
      memcached_set_sasl_auth_data(memcached, USERNAME, PASSWORD);
      memcached_behavior_set(memcached,MEMCACHED_BEHAVIOR_BINARY_PROTOCOL,1);
      memcached_server_push(memcached,cache);
      memcached_server_list_free(cache);
      return memcached;
      } int main(int argc, char *argv[])
      {
      memcached_st *memcached=init();
      string key = "memcached";
      string value = "hello world!";
      size_t value_length = value.length();
      int expire_time = 0;
      uint32_t flag = 0; rusult = memcached_set(memcached,key.c_str(),key.length(),value.c_str(),value.length(),expire_time,flag);
      if (rusult != MEMCACHED_SUCCESS){
      cout <<"set data failed: " << rusult << endl;
      return -1;
      }
      cout << "set succesed, key: " << key << ", value: " << value << endl;
      cout << "get key:" << key << endl;
      char* result = memcached_get(memcached,key.c_str(),key.length(),&value_length,&flag,&rusult);
      cout << "value:" << result << endl; memcached_free(memcached);
      return 0;
      }
       
    • 免密模式代码示例

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

      #include <iostream>
      #include <string>
      #include <libmemcached/memcached.h>
      using namespace std; #define IP "ip or domain name"
      #define PORT port
      memcached_return rusult; memcached_st * init()
      {
      memcached_st *memcached = NULL;
      memcached_server_st *cache;
      memcached = memcached_create(NULL);
      cache = memcached_server_list_append(NULL, IP, PORT, &rusult);
      memcached_server_push(memcached,cache);
      memcached_server_list_free(cache);
      return memcached;
      } int main(int argc, char *argv[])
      {
      memcached_st *memcached=init();
      string key = "memcached";
      string value = "hello world!";
      size_t value_length = value.length();
      int expire_time = 0;
      uint32_t flag = 0; rusult = memcached_set(memcached,key.c_str(),key.length(),value.c_str(),value.length(),expire_time,flag);
      if (rusult != MEMCACHED_SUCCESS){
      cout <<"set data failed: " << rusult << endl;
      return -1;
      }
      cout << "set succesed, key: " << key << " ,value: " << value << endl;
      cout << "get key:" << key << endl;
      char* result = memcached_get(memcached,key.c_str(),key.length(),&value_length,&flag,&rusult);
      cout << "value:" << result << endl; memcached_free(memcached);
      return 0;
      }
       
  7. 执行如下命令编译源码。

    chmod 700 build.sh

    ./build.sh

    生成dcs_sample二进制文件。

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

    set succesed, key: memcached ,value: hello world!
    get key:memcached
    value:hello world!

Memcache的客户端连接系列(三) C++的更多相关文章

  1. Memcache的客户端连接系列(四) PHP

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

  2. Memcache的客户端连接系列(二) Python

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

  3. Memcache的客户端连接系列(一) Java

    声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(Memcached)的用户指南. 关键词: Memcached  客户端 Java Java连接池 Java客户端示例 用户的弹性云服务器已安装 ...

  4. Redis客户端连接以及持久化数据(三)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  5. Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

    Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...

  6. redis客户端连接异常

    本文参考:http://mdba.cn/2015/04/02/redistwemproxy-%e5%ae%a2%e6%88%b7%e7%ab%af%e8%bf%9e%e6%8e%a5%e5%bc%82 ...

  7. Redis基础知识之————如何处理客户端连接

    redis 连接建立 Redis Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 ...

  8. 配置ORACLE 客户端连接到数据库

    --================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle ...

  9. Oracle RAC 客户端连接负载均衡(Load Balance)

    实现负载均衡(Load Balance)是Oracle RAC最重要的特性之一,主要是把负载平均分配到集群中的各个节点,以提高系统的整体吞吐能力.通常情况下有两种方式来实现负载均衡,一个是基于客户端连 ...

随机推荐

  1. ElasticSearch的配置

  2. C++笔记011:C++对C的扩展——变量检测增强

    原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 在C语言中重复定义多个同名的变量是合法的,多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上. 在C++中,不允许定义多个同名的 ...

  3. C++ Primer 第8章作业

    练习8.1 编写函数,接受一个istream&参数,返回值类型也是istream&. 此函数须从给定流中读取数据,直至遇到文件结束标识时停止.它将读取的数据打印在标准输出上.完成这些操 ...

  4. <CPP学习 第二天> 字符串的输入 及 String类

    今天简单的学习了字符串的输入以及C++的String类. 1.面向行的输入: getline(); getline()函数读取整行,通过回车键输入的换行符来确定输入结尾.要调用这种方法,可以使用cin ...

  5. vue 样式渲染,添加删除元素

    <template> <div> <ul> <li v-for="(item,index) in cartoon" :key=" ...

  6. JQuery制作网页—— 第七章 jQuery中的事件与动画

    1. jQuery中的事件: ●和WinForm一样,在网页中的交互也是需要事件来实现的,例如tab切换效果,可以通过鼠标单击事件来实现 ●jQuery事件是对JavaScript事件的封装,常用事件 ...

  7. 导航栏NavigationBar的按钮设置

    有时候在自定义navigationBar的左右按钮的时候,button的图片会显得很大,个人感觉原因有以下几种情况: 1.使用的是UIButton直接加在navigationBar上面 2.自定义了一 ...

  8. Julia 1.0 中文文档

    欢迎来到Julia 1.0的文档. 请阅读发布博客文章,了解该语言的一般概述以及自Julia v0.6以来的许多更改.请注意,0.7版本与1.0一起发布,以提供1.0版本之前的软件包和代码的升级路径. ...

  9. python3 练习题100例 (九)

    题目九:题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?程序分析:兔子的规律为数列1,1,2,3,5 ...

  10. Python学习:6.python内置函数

    Python内置函数 python内置函数,是随着python解释器运行而创建的函数,不需要重新定义,可以直接调用,那python的内置函数有哪些呢,接下来我们就了解一下python的内置函数,这些内 ...