memcached 测试代码
转载请注明来源:https://www.cnblogs.com/hookjc/
- #include<stdio.h>
- #include <iostream>
- #include <string>
- #include <map>
- #include <libmemcached/memcached.h>
- using namespace std;
- int main()
- {
- char szIp[] = "127.0.0.1";
- int iPort = 11211;
- memcached_st *pstMCache = memcached_create(NULL);
- int iResult = memcached_server_add(pstMCache, szIp, iPort); //支持多台cache的分布式
- //使用二进制协议传输
- iResult = memcached_behavior_set(pstMCache, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1);
- if (iResult != MEMCACHED_SUCCESS)
- {
- printf("memcached_server_add fail %s:%d", szIp, iPort);
- return -1;
- }
- //使用Consistent hashing算法将key分配到不同机器的不同位置
- iResult = memcached_behavior_set(pstMCache, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED, 1);
- if (iResult != MEMCACHED_SUCCESS)
- {
- printf("[%s]Error:memcached_behavior_set MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED fail", __FUNCTION__);
- return -2;
- }
- //使用NO-BLOCK,防止memcache倒掉时挂死
- iResult = memcached_behavior_set(pstMCache,MEMCACHED_BEHAVIOR_NO_BLOCK, 1);
- if (iResult != MEMCACHED_SUCCESS)
- {
- printf("[%s]Error:memcached_behavior_set MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED fail", __FUNCTION__);
- return -3;
- }
- memcached_return rc;
- string key = "10000";
- string val = "测试内容1";
- rc = memcached_set(pstMCache, key.c_str(), key.size(), val.c_str(), val.size(), 0, 0);
- if (rc == MEMCACHED_SUCCESS)
- { //set成功,进行get
- unsigned int flags = 0;
- char *mc_val = NULL;
- size_t val_len = 0;
- mc_val = memcached_get(pstMCache, key.c_str(), key.size(), &val_len, &flags, &rc);
- if (rc == MEMCACHED_SUCCESS)
- {
- printf("buffer:%s|len:%Zd|cas:%ld\n", mc_val, val_len, pstMCache->result.item_cas);
- if ( mc_val != NULL ){
- free(mc_val);
- mc_val = NULL;
- }
- }
- else
- {
- if ( mc_val != NULL ){
- free(mc_val);
- mc_val = NULL;
- }
- string err = memcached_strerror(pstMCache, rc);
- printf("err:%s\n", err.c_str());
- return -4;
- }
- string val1 = "测试内容2";
- //做了并发容错的memcached_cas 写操作,服务器维持了一个cas序列号,每次调用memcached_cas时,会判断之前get出来的cas是否发生了变化,变化了的话,说明已经被其他程序给修改了
- rc= memcached_cas(pstMCache, key.c_str(), key.size(), val1.c_str(), val1.size(),0, 0, pstMCache->result.item_cas/*这个值是唯一序列*/);
- if (rc == MEMCACHED_SUCCESS)
- {
- printf("rc:%d\n", rc);
- }
- else
- {
- string err = memcached_strerror(pstMCache, rc);
- printf("err:%s\n", err.c_str());
- }
- mc_val = memcached_get(pstMCache, key.c_str(), key.size(), &val_len, &flags, &rc);
- if (rc == MEMCACHED_SUCCESS)
- {
- printf("buffer:%s|len:%Zd\n", mc_val, val_len);
- }
- else
- {
- string err = memcached_strerror(pstMCache, rc);
- printf("err:%s\n", err.c_str());
- return -4;
- }
- }
- else
- {
- string err = memcached_strerror(pstMCache, rc);
- printf("err:%s\n", err.c_str());
- return -5;
- }
- return 0;
- }
来源:python脚本自动迁移
memcached 测试代码的更多相关文章
- .NET单元测试的艺术-3.测试代码
开篇:上一篇我们学习单元测试和核心技术:存根.模拟对象和隔离框架,它们是我们进行高质量单元测试的技术基础.本篇会集中在管理和组织单元测试的技术,以及如何确保在真实项目中进行高质量的单元测试. 系列目录 ...
- mysql锁 实战测试代码
存储引擎 支持的锁定 MyISAM 表级锁 MEMORY 表级锁 InnoDB 行级锁 BDB 页面锁 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低.行级锁:开销 ...
- 使用Microsoft Fakes隔离测试代码
在单元测试(Unit Test)中我们遇到的问题之一是:假如被测试组件(类或项目)为A,组件A依赖于组件B,那么在组件A的单元测试ATest中测试A时,也需要依赖于B,在B发生改动后,就可能影响到A的 ...
- iOS开发:XCTest单元测试(附上一个单例的测试代码)
测试驱动开发并不是一个很新鲜的概念了.在我最开始学习程序编写时,最喜欢干的事情就是编写一段代码,然后运行观察结果是否正确.我所学习第一门语言是c语言,用的最多的是在算法设计上,那时候最常做的事情就是编 ...
- 在内核中异步请求设备固件firmware的测试代码
在内核中异步请求设备固件firmware的测试代码 static void ghost_load_firmware_callback(const struct firmware *fw, void * ...
- x264测试代码
建立一个工程,将头文件,库文件加载到工程,测试代码如下:#include <iostream>#include <string>#include "stdint.h& ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...
- Git合并开发代码分支到测试代码分支
——转载请注明出自天外归云的博客园 用TortoiseGit下载代码到本地 首先需要在本机安装好TortoiseGit.然后在随便哪个路径下比如D盘,右键“Git Clone”: 然后URL处选择项目 ...
- mvn编写主代码与测试代码
maven编写主代码与测试代码 3.2 编写主代码 项目主代码和测试代码不同,项目的主代码会被打包到最终的构件中(比如jar),而测试代码只在运行测试时用到,不会被打包.默认情况下,Maven假设项目 ...
随机推荐
- EDP转LVDS屏转接板方案|基于INTELX86主板和商显应用EDP转LVDS设计CS5211
众所周知LVDS接口是美国NS美国国家半导体公司为克服以TTL电平方式传输宽带高码率数据时功耗大,电磁干扰大等缺点而研制的一种数字视频信号传输方式.由于其采用低压和低电流驱动方式,实现了低噪声和低功耗 ...
- 编写Java程序,使用PreparedState实现对英雄数据的新增、删除和更新
返回本章节 返回作业目录 需求说明: 使用PreparedState实现对英雄数据的新增.删除和更新 英雄(t_hero)表结构 列名(含义) 数据类型 约束 id (序号) int 主键,自动增长 ...
- Oracle 查询NULL字段/空字符串
简单记录一下: 工作中需要查询某个字段值为空的数据, 最开始查询的时候按照以前的思路 : 1.where 字段名=NULL,点击F8,未查到结果: 2.where 字段名='',点击F8,未查到结果: ...
- LINUX学习-Mysql安装
一.安装环境 操作系统CentOS6.8 关闭SeLinux和iptables防火墙 二.网络yum源 将下面的软件下载到 /etc/yum.repos.d/ 的目录下 官方基础:http:// ...
- 腾讯 TKE 厉害了!用 eBPF绕过 conntrack 优化K8s Service,性能提升40%
Kubernetes Service[1] 用于实现集群中业务之间的互相调用和负载均衡,目前社区的实现主要有userspace,iptables和IPVS三种模式.IPVS模式的性能最好,但依然有优化 ...
- Java 在PDF中添加工具提示|ToolTip
本文,将介绍如何通过Java后端程序代码在PDF中创建工具提示.添加工具提示后,当鼠标悬停在页面上的元素时,将显示工具提示内容. 导入jar包 本次程序中使用的是 Free Spire.PDF for ...
- Quay v3.5.1 部署踩坑
官方文档好久没更新了 拿来部署了一个最新的软件 把我坑死了 首先你需要一个podman OR docker 官方用podman 本文同 设置 Postgres 官方推荐数据库 $ mkdir -p $ ...
- [学习分享] 在Windows操作系统下如何安装RMySQL包
最近在做股票的高频交易数据分析,需要用到数据库,而我只对MySQL比较熟悉,于是就安装了MySQL.当我安装好了MySQL后,正兴冲冲地准备安装RMySQL包时,问题来了:RMySQL包不支持wind ...
- JUC之线程池基础与简单源码分析
线程池 定义和方法 线程池的工作时控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等待其他线程执行完成,再从队列中取出任 ...
- linux 查看端口占用情况并关闭进程
首先要搞清楚 linux 查看进程和查看端口是两个概念,一般来讲进程会有多个,而固定端口只会有一个. 1.查看进程 ,通常在使用 ps 命令后 用管道连接(ps -ef|grep xxx ) 查 ...