Memcache的客户端连接系列(三) C++
关键词: Memcached C++ 客户端
声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(Memcached)的用户指南。客户端连接方法通用,故摘抄过来分享给大家。
C++客户端示例
- 用户的弹性云服务器已安装好GCC,建议为4.8.4或更高版本。
- 已获取libmemcached-x.y.z.tar.gz依赖包。
说明:
其中x.y.z为依赖包的版本号,建议获取最新版本。
- 获取缓存实例的IP地址/域名和端口。
- 登录管理控制台。
- 在管理控制台左上角单击
图标,选择区域和项目。
说明:
此处请选择与租户的应用服务相同的区域。
- 单击页面上方的“服务列表”,选择“数据库 > 分布式缓存服务”,进入分布式缓存服务信息页面。
- 单击左侧菜单栏的“缓存管理”,进入缓存实例信息页面。
- 单击需要使用的其中一个缓存实例的名称,进入该缓存实例的基本信息页面。查看并获取该分布式缓存实例的IP地址/域名和端口。
- 将已获取的libmemcached-x.y.z.tar.gz依赖包上传到已创建的弹性云服务器。
- 登录弹性云服务器。
- 执行如下命令安装依赖包。
tar -xzvf libmemcached-x.y.z.tar.gz
cd libmemcached-x.y.z
./configure --enable-sasl
make
make install
- 新建build.sh文件,将如下代码复制到build.sh文件。
g++ -o dcs_sample dcs_sample.cpp -lmemcached -std=c++0x -lpthread -lsasl2
- 新建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;
}
- 密码模式代码示例
- 执行如下命令编译源码。
chmod 700 build.sh
./build.sh
生成dcs_sample二进制文件。
- 执行如下命令连接使用缓存实例。
./dcs_sample
set succesed, key: memcached ,value: hello world!
get key:memcached
value:hello world!
Memcache的客户端连接系列(三) C++的更多相关文章
- Memcache的客户端连接系列(四) PHP
关键词: Memcached PHP 客户端 声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(Memcached)的用户指南.客户端连接方法通用,故摘抄过来分享给大家. PHP客户端 Re ...
- Memcache的客户端连接系列(二) Python
关键词: Memcached Python 客户端 声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(Memcached)的用户指南.客户端连接方法通用,故摘抄过来分享给大家. Python ...
- Memcache的客户端连接系列(一) Java
声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(Memcached)的用户指南. 关键词: Memcached 客户端 Java Java连接池 Java客户端示例 用户的弹性云服务器已安装 ...
- Redis客户端连接以及持久化数据(三)
0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...
- Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送
Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...
- 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 ...
- Redis基础知识之————如何处理客户端连接
redis 连接建立 Redis Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 ...
- 配置ORACLE 客户端连接到数据库
--================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle ...
- Oracle RAC 客户端连接负载均衡(Load Balance)
实现负载均衡(Load Balance)是Oracle RAC最重要的特性之一,主要是把负载平均分配到集群中的各个节点,以提高系统的整体吞吐能力.通常情况下有两种方式来实现负载均衡,一个是基于客户端连 ...
随机推荐
- HTML5前端性能优化——浏览器兼容与前端性能优化
一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...
- 关于swing界面label和button的动态设置文字
在引入发送验证码功能后,想让button的文本动态变化,发现如下方法并不能做到: int limitSec=10; while(limitSec>0){ sendyzhm.setEnabled( ...
- Jquery获取select标签的值、文本方式
<script> function add(){ var prop_name=$("#prop").find("option:selec ...
- JAVA格式化解析日期
- 爬虫之Beautifulsoup及xpath
1.BeautifulSoup (以 Python 风格的方式来对 HTML 或 XML 进行迭代,搜索和修改) 1.1 介绍 Beautiful Soup提供一些简单的.python式的函数用来处理 ...
- oracle系列(三)表操作基础
支持的数据类型: 字符型char 定长 最大2000varchar2() 变长 最大4000clob 字符型大对象 最大4G 数字型number范围 -10的38次方到10的+38次方;number( ...
- 解决ajax请求(SpringMVC后台)响应415/400/405错误
解决ajax请求(SpringMVC后台)响应415/400/405错误 后端代码 bean public class user { private String username; private ...
- 离不开的微服务架构,脱不开的RPC细节(值得收藏)!!!
服务化有什么好处? 服务化的一个好处就是,不限定服务的提供方使用什么技术选型,能够实现大公司跨团队的技术解耦,如下图所示: 服务A:欧洲团队维护,技术背景是Java 服务B:美洲团队维护,用C++实现 ...
- Delphi7 GDI+学习
Delphi7自带的绘图有锯齿,所以要学习GDI+ 主要是从这个网站学习 http://www.bianceng.com/Programming/Delphi/201212/34691.htm 相关控 ...
- STM32_1 搭建工程框架
搭建系统框架 -- 创建系统文件夹 -- 拷贝stm32库文件 -- 将文件添加至工程 -- 配置工程环境 1. 创建工程文件夹 找一个工程目录,我就在 stm32/Code 下创建一个模板工程Tem ...